Django-Foreingkey关系需要字段

Django-Foreingkey关系需要字段,django,serialization,model,deserialization,Django,Serialization,Model,Deserialization,我有以下两个模型之间的外键关系: class Text(models.Model): textcontent = models.CharField(max_length=100) class Comment(models.Model): text = models.ForeignKey(ModelA, on_delete=models.CASCADE,

我有以下两个模型之间的外键关系:

class Text(models.Model):
    textcontent = models.CharField(max_length=100)


class Comment(models.Model):
    text = models.ForeignKey(ModelA,
                               on_delete=models.CASCADE,
                               null=True,
                               blank=True)
    commentContent = models.CharField(max_length=100)
因此,一个文本可以有多个注释,但注释只分配给一个文本。 在
serializers.py
中,我有以下内容:

class TextSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Text
        fields = ('url',
                  'id',
                  'comment_set'
                  )
如您所见,我还想通过
'comment\u set'
显示属于一个文本的注释集。 但是,当我创建一个文本实例(不提供注释)时,我会在命令行上看到以下内容:

“注释集”:[ “此字段为必填字段。” ],

为什么需要它?我已经将空白和空参数设置为true。 如何解决这个问题?

您可以在meta类中设置,如下所示

class TextSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Text
        fields = ('url', 'id', 'comment_set')
        read_only_fields = ('comment_set',)
类TextSerializer(serializers.HyperlinkedModelSerializer):
类元:
模型=文本
字段=('url','id','comment\u set')
只读字段=('comment\u set',)
您可以在元类中设置,如下所示

class TextSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Text
        fields = ('url', 'id', 'comment_set')
        read_only_fields = ('comment_set',)
类TextSerializer(serializers.HyperlinkedModelSerializer):
类元:
模型=文本
字段=('url','id','comment\u set')

只读字段=('comment\u set',)
执行此操作时,是否可以稍后向创建的文本实例添加注释实例?
comment\u set
是一种反向关系,您不能通过
TextSerializer
创建
comment
实例,除非您重写
create()
方法,即使未引发错误,您也无法使用
TextSerializer
创建
Comment
实例。是的,但我的意思是:当我稍后通过CommentSerializer创建注释实例时,我可以将其与文本实例关联,对吗?此字段为只读的事实不会影响添加过程,对吗?是的。此只读不会影响添加过程,除非您尝试将数据放在同一字段中,这里是
注释集
。您可以使用一个新字段,
comment
来添加新数据。当我这样做时,我以后可以向创建的文本实例添加注释实例吗?
comment\u set
是一种反向关系,您不能通过
TextSerializer
创建
comment
实例,除非您重写
create()
方法。这意味着,即使未引发错误,您也无法使用
TextSerializer
创建
Comment
实例。是的,但我的意思是:当我稍后通过CommentSerializer创建注释实例时,我可以将其与文本实例关联,对吗?此字段为只读的事实不会影响添加过程,对吗?是的。此只读不会影响添加过程,除非您尝试将数据放在同一字段中,这里是
注释集
。您可以使用新字段
comment
添加新数据。