发布数据后禁用响应中的只读字段

Disable read only fields in the response after posting the data

我的模特:

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_id 和 defaultLanguage_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')

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')

它将如您所愿地工作。