我有两个模型。。讨论扩展了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
和
^{pr2}$和
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”放在“公共”字段列表中,应用程序将返回以下错误:
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要好。请参阅有关处理嵌套对象的序列化程序docs。在相关问题 更多 >
编程相关推荐