python - Django DRF 关注关系
问题描述
好吧,我正在尝试关注与 Django Rest Framework 的关系。
这是一个简化的模型:
class Model1(models.Model):
name = models.CharField(max_length=20)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
class Model2(models.Model):
title = models.CharField(max_length=12, null=True, blank=True)
model1 = models.ForeignKey(Model1, on_delete=models.CASCADE)
和序列化器:
class Model1Serializer(serializers.ModelSerializer):
class Meta:
model = Model1
fields = '__all__'
class Model2Serializer(serializers.ModelSerializer):
class Meta:
model = Model2
fields = '__all__'
从 Model2,我想访问所有者属性,例如电子邮件...
如果没有 DRF 和标准模板,我会这样做:
{{ instanceOfModel2.model1.owner.email }}
这将遵循关系。
您知道如何使用 Django DRF 实现这一目标吗?
我查看了https://www.django-rest-framework.org/api-guide/relations/ 但我想要的是相反的方式......而且我不想通过 REST API 公开 Django 用户模型……
解决方案
您可以使用点分表示法定义新字段以及source
属性:
class Model2Serializer(serializers.ModelSerializer):
email = serializers.EmailField(source='model1.owner.email', read_only=True)
class Meta:
model = Model2
fields = '__all__'
推荐阅读
- python - 如何将这两个数据框连接在一起以使它们重叠并适合日期?
- eclipse - Eclipse 不显示为 RestAssured 项目导入包的建议。如何解决这个问题?
- r - 格式化 R Markdown 输出,以便可以将其复制并粘贴到 twitter
- sql - 添加小时到日期以实现下一个 6:00
- html - 这是铬错误吗?
- python - 关于用networkx画图的问题
- python - 识别灰色图片中的白色晶体并为它们创建二进制掩码
- php - Guzzle pool:重构匿名函数后如何获取池响应
- rust - 如何制作 Rc 的右值链接
> 工作? - python - 将 json 文件保存在 s3 存储桶中时出现错误 No such file