Python “Django REST POST”列中的空值;“用户id”;违反非空约束
在用户字段中发送创建新项的post请求后,我出现错误-在“用户id”列中返回空值违反了非空约束详细信息:失败的行包含(61,我的公司,{2,3},2020-08-08 10:41:54.355926+00,我的描述,2,2,空)。发送JSON的我的数据Python “Django REST POST”列中的空值;“用户id”;违反非空约束,python,django,django-rest-framework,Python,Django,Django Rest Framework,在用户字段中发送创建新项的post请求后,我出现错误-在“用户id”列中返回空值违反了非空约束详细信息:失败的行包含(61,我的公司,{2,3},2020-08-08 10:41:54.355926+00,我的描述,2,2,空)。发送JSON的我的数据 { "name": "My Company", "members":[2, 3] , "user": 2, "desc
{
"name": "My Company",
"members":[2, 3] ,
"user": 2,
"description": "My desc",
"status": 2,
"theme": 2
}
序列化程序.py
class 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__'
看看您的其他问题,似乎您需要
user=UserSerializer(read_only=True)
来获取请求。如果是,
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
您希望编写嵌套关系。看这里。哦,谢谢你。但这对我来说很难理解(显示您的post请求数据)。