[英]How to get child model field value from parent model serializer in Django Rest Framework?
[英]How to get fields from parent object model in serializer - django rest framework
我有两个模型。讨论扩展GenericModel。
class GenericModel(models.Model):
content_type = models.ForeignKey(
ContentType,
on_delete=models.CASCADE
)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
class Meta:
abstract = True
和
class Discussion(GenericModel):
author = models.ForeignKey(
'auth.User'
)
name = models.CharField(
max_length=200
)
description = models.TextField()
created_data = models.DateTimeField(
default=timezone.now
)
comments = models.ManyToManyField(
'discussions.Comment',
default='',
blank=True,
related_name='discussion_comments'
)
is_closed = models.BooleanField(
default=False
)
visits = models.IntegerField(
default=0
)
def __str__(self):
return self.name
和
COMMON_FIELDS = (
'pk',
'author',
'name',
'description',
'created_data',
'comments',
'is_closed',
'visits'
)
class DiscussionSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Discussion
fields = COMMON_FIELDS
class DiscussionListSerializer(serializers.HyperlinkedModelSerializer):
comments = CommentSerializer(many=True)
class Meta:
model = Discussion
fields = COMMON_FIELDS
所以..如果我将“ content_type”,“ object_id”,“ content_object”放在COMMON_FIELDS列表中,则应用程序将向我返回此错误:
Could not resolve URL for hyperlinked relationship using view name "contenttype-detail". You may have failed to include the related model in your API, or incorrectly configured the `lookup_field` attribute on this field.
我该怎么办,或者解决此问题的更好方法是什么?
好吧,这是一个HyperlinkedModelSerializer
,您的序列化程序将尝试在您的Discussion
上解析相关GenericModel
的URL。
我相信一种解决方案是在您的DiscussionSerializer/DiscussionListSerializer
上定义GenericModel
字段以使用它(也定义GenericModel
序列化器)。 这比尝试为模型中未包含的内容解析URL更好。 请参阅有关处理嵌套对象的序列化器文档 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.