【发布时间】:2021-06-22 05:07:16
【问题描述】:
我正在尝试找出如何从关系模型中添加超链接相关字段。
假设我有以下模型:
class Model1(models.Model):
id = models.AutoField(primary_key=True)
model2 = models.OneToOneField(Model2, db_column='model2_id', related_name='model2_set', on_delete=CASCADE)
class Model2(models.Model):
id = models.AutoField(primary_key=True)
model3 = models.ForeignKey(Model3, db_column='model3_id',
related_name='+', null=True, blank=True, on_delete=FOREIGNKEY_PROTECT)
class Model3(models.Model):
id = models.AutoField(primary_key=True)
description = models.TextField(db_column='description', null=True, blank=True, verbose_name=_('Description'))
我对 Model1 和 Model3 都有一个序列化程序,但对 Model2 没有
我想要以下输出
{
"id":123,
"model3":"http://example:123/api/model3/123"
}
但在我的 model1 序列化程序中,我不能简单地为子模型调用超链接相关字段,因为它无法识别源
class Model1ListSerializer(ValidateByModelSerializer):
id = serializers.IntegerField(read_only=True)
model3 = serializers.HyperlinkedRelatedField(
source='model2__model3',
queryset=Model3.objects.all(),
view_name='model3_rest-detail'
)
实现这一目标的最佳方法是什么?
【问题讨论】:
标签: django django-rest-framework django-serializer django-1.8