亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

“user_id”列中的 Django REST POST 空值違反了非空約束

“user_id”列中的 Django REST POST 空值違反了非空約束

慕無忌1623718 2023-05-09 15:15:07
發送在用戶字段中創建新項目的帖子請求后出現錯誤-它在“user_id”列中返回空值違反了非空約束詳細信息:失敗行包含(61,我的公司,{2,3},2020-08- 08 10:41:54.355926+00,我的描述,2、2,空)。. 我要以 JSON 格式發送的數據{    "name": "My Company",     "members":[2, 3] ,     "user": 2,     "description": "My desc",     "status": 2,     "theme": 2}serializers.pyclass AccountSerializer(serializers.ModelSerializer):    user=serializers.StringRelatedField(read_only=False)    class Meta:        model=Account        fields='__all__'class UserSerializer(serializers.ModelSerializer):    class Meta:        model = User        fields = '__all__'class CompanySerializer(serializers.ModelSerializer):    user = UserSerializer(read_only=True)    def __init__(self, *args, **kwargs):        super().__init__(*args, **kwargs)        try:            if self.context['request'].method in ['GET']:                self.fields['members'] = serializers.SerializerMethodField()        except KeyError:            pass    class Meta:        model = Company        fields = '__all__'            def get_members(self, obj):        accounts = Account.objects.filter(id__in=obj.members)        return AccountSerializer(accounts, many=True).data        class CompanyListSerializer(serializers.ModelSerializer):    class Meta:         model = Company        fields = '__all__'
查看完整描述

1 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

查看您的其他問題,似乎您 user = UserSerializer(read_only=True)只需要 GET 請求。如果是這樣,


class CompanySerializer(serializers.ModelSerializer):

    def __init__(self, *args, **kwargs):

        super().__init__(*args, **kwargs)

        try:

            if self.context['request'].method in ['GET']:

                self.fields['members'] = serializers.SerializerMethodField()

                self.fields['user'] = UserSerializer()

        except KeyError:

            pass


    class Meta:

        model = Company

        fields = '__all__'

        

    def get_members(self, obj):

        accounts = Account.objects.filter(id__in=obj.members)

        return AccountSerializer(accounts, many=True).data


查看完整回答
反對 回復 2023-05-09
  • 1 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號