sto*_*sky 1 python django relationship django-rest-framework
好吧,我正在尝试跟踪与 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)
Run Code Online (Sandbox Code Playgroud)
和序列化器:
class Model1Serializer(serializers.ModelSerializer):
class Meta:
model = Model1
fields = '__all__'
class Model2Serializer(serializers.ModelSerializer):
class Meta:
model = Model2
fields = '__all__'
Run Code Online (Sandbox Code Playgroud)
从 Model2 中,我想访问所有者属性,例如电子邮件......
如果没有 DRF 并且在标准模板中,我会这样做:
{{ instanceOfModel2.model1.owner.email }}
Run Code Online (Sandbox Code Playgroud)
这将遵循关系。
您知道如何使用 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__'
Run Code Online (Sandbox Code Playgroud)