如何在序列化程序Django rest fram中从父对象模型获取字段

2024-10-02 02:32:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个模型。。讨论扩展了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.

我该怎么做,或者解决这个问题的更好方法是什么?在


Tags: nameidtruefieldsmodelobjectonmodels
1条回答
网友
1楼 · 发布于 2024-10-02 02:32:18

好吧,它是一个HyperlinkedModelSerializer,您的序列化程序将尝试解析您的Discussion上相关的GenericModel的URL。在

我相信一个解决方案是在您的DiscussionSerializer/DiscussionListSerializer上定义GenericModel字段来使用它(同时定义GenericModel序列化程序)。这比尝试解析模型中没有包含的内容的URL要好。请参阅有关处理嵌套对象的序列化程序docs。在

相关问题 更多 >

    热门问题