[英]How can i get foreign key table value istead of id in Django rest_framework?
最近我开始使用 django 框架,我被困在这种情况下尝试阅读文档,但我缺乏经验,我不太明白有什么方法可以得到我们想要的响应,保持 django 默认检查,尽可能多的验证。 我尝试使用def to_representation ,但它仍然让我在调试时响应为 null。
用例:我在下面提到了 model 我希望外键值作为文本存储在产品表中的表 status_lookup.name 中
class product_serializer(serializers.ModelSerializer):
status = status_lookup_serializer(read_only=True,many=False)
class Meta:
model = product
fields = ('id','name','status_id','status')
model.py
class status_lookup(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=30)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(blank=True)
activation_date = models.DateTimeField(auto_now_add=True)
deactivation_date = models.DateTimeField(blank=True,default=None)
def __str__(self):
return self.name
class product(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=30)
img_url = models.CharField(max_length=255,blank=True)
status_id = models.ForeignKey(status_lookup, related_name='status', on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(blank=True)
activation_date = models.DateTimeField(auto_now_add=True)
deactivation_date = models.DateTimeField(blank=True,default=None)
def __str__(self):
return self.name
我想
[
{
"id":1,
"name":"xxx",
"status":pending
}
]
检查这是否对您有帮助。 这是 Django-rest-framework 的文档链接
https://www.django-rest-framework.org/api-guide/serializers/
我能够做到这一点我不知道这是否是最佳方式,但会保持这个问题开放,直到我找到一个或某人的答案。
class statusField(serializers.RelatedField):
def to_representation(self, value):
return {
'name':value.name
}
class product_serializer(serializers.ModelSerializer):
status_id = statusField(many=False,read_only=True)
class Meta:
model = product
fields = ('id','name','status_id')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.