Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 在过帐数据后禁用响应中的只读字段_Django_Django Models_Django Rest Framework_Django Views_Django Serializer - Fatal编程技术网

Django 在过帐数据后禁用响应中的只读字段

Django 在过帐数据后禁用响应中的只读字段,django,django-models,django-rest-framework,django-views,django-serializer,Django,Django Models,Django Rest Framework,Django Views,Django Serializer,我的模型: class NewsID(models.Model): pass class News(models.Model): newsId=models.ForeignKey(NewsID,related_name = 'News', on_delete=models.CASCADE) lang_code=models.CharField(max_length=2) headline=models.CharField(max_length=100) cla

我的模型:

class NewsID(models.Model):
    pass

class News(models.Model):
    newsId=models.ForeignKey(NewsID,related_name = 'News', on_delete=models.CASCADE)
    lang_code=models.CharField(max_length=2)
    headline=models.CharField(max_length=100)

class DefaultLanguage(models.Model):
    news_id  = models.ForeignKey(NewsID,related_name = 'default', on_delete=models.CASCADE)
    defaultLanguage_id = models.IntegerField(unique=True)
我的序列化程序:

class NewsSerializer(QueryFieldsMixin,serializers.ModelSerializer):
    class Meta:
        model=News
        fields=('lang_code','headline')

class DefaultLanguageSerializer(QueryFieldsMixin,serializers.ModelSerializer):
    class Meta:
        model = DefaultLanguage
        fields = ('news_id  ','defaultLanguage_id ')
        read_only_fields = ['news_id  ','defaultLanguage_id ']

class NewsIDSerializer(QueryFieldsMixin,serializers.ModelSerializer):
    News = NewsSerializer(many=True)
    default_language = serializers.CharField(max_length=2,write_only=True)

    class Meta:
        model = NewsID
        fields = ('id','News','default_language')
我希望在发布后回复如下:

{
      "id": 10,
      "News": [
        {
          "lang_code": "en",
          "headline": "Breaking news"
        }
      ],
      "default_language": "en"
    }
现在我的回答如下:

{
  "id": 10,
  "News": [
    {
      "lang_code": "en",
      "headline": "Breaking news"
    }
  ]
}

现在我的回复包含news\u id和defaultLanguage\u id只读字段,我不希望在发布后回复包含只读字段。如何使用Django实现这一点?

将序列化程序从

class NewsIDSerializer(QueryFieldsMixin,serializers.ModelSerializer):
    News = NewsSerializer(many=True)
    default = DefaultLanguageSerializer(many=True,read_only=True)
    default_language = serializers.CharField(max_length=2,write_only=True)

    class Meta:
        model = NewsID
        fields = ('id','News','default','default_language')


它将按照您的预期工作。

请分享您得到的响应。我已添加了我的响应。请看一看。更新您的模型NewsIDIts。但是默认语言没有出现在我的回复中。我已经在代码中编辑了我的回复
class NewsIDSerializer(QueryFieldsMixin,serializers.ModelSerializer):
    News = NewsSerializer(many=True)
    default_language = serializers.CharField(max_length=2)

    class Meta:
        model = NewsID
        fields = ('id','News','default_language')