Python 无法验证django RESTFramework中的字段,如何克服这种错误
序列化程序.pyPython 无法验证django RESTFramework中的字段,如何克服这种错误,python,django,django-validation,django-rest-framework,Python,Django,Django Validation,Django Rest Framework,序列化程序.py class UserSerializer(serializers.ModelSerializer): city = CitiesSerializers() state = StatesSerializers() country = CountrySerializes() class Meta: model = User fields = ('url', 'username', 'email', 'groups', 'first_name',
class UserSerializer(serializers.ModelSerializer):
city = CitiesSerializers()
state = StatesSerializers()
country = CountrySerializes()
class Meta:
model = User
fields = ('url', 'username', 'email', 'groups', 'first_name', 'last_name', 'company_name', 'email2', 'address',
'country', 'state', 'city', 'pincode', 'phone_no1', 'phone_no2', )`class CountrySerializes(serializers.ModelSerializer):
class Meta:
model = Countries
fields = ('__all__')
class StatesSerializers(serializers.ModelSerializer):
class Meta:
model = States
fields = ('__all__')
class CitiesSerializers(serializers.ModelSerializer):
class Meta:
model = Cities
fields = ('__all__') `
if serialized.is_valid():
User.objects.create_user(company_name=company_name, email2=email2, address=address, country_id=country,
state_id=state, city_id=city, pincode=pincode, phone_no1=phone_no1,
phone_no2=phone_no2, password=password, username=username, email=email,
first_name=first_name, last_name=last_name, is_active=is_active)
return Response({'status': 1, "message": "User created with this detail"}, status=status.HTTP_201_CREATED)
else:
return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
视图.py
class UserSerializer(serializers.ModelSerializer):
city = CitiesSerializers()
state = StatesSerializers()
country = CountrySerializes()
class Meta:
model = User
fields = ('url', 'username', 'email', 'groups', 'first_name', 'last_name', 'company_name', 'email2', 'address',
'country', 'state', 'city', 'pincode', 'phone_no1', 'phone_no2', )`class CountrySerializes(serializers.ModelSerializer):
class Meta:
model = Countries
fields = ('__all__')
class StatesSerializers(serializers.ModelSerializer):
class Meta:
model = States
fields = ('__all__')
class CitiesSerializers(serializers.ModelSerializer):
class Meta:
model = Cities
fields = ('__all__') `
if serialized.is_valid():
User.objects.create_user(company_name=company_name, email2=email2, address=address, country_id=country,
state_id=state, city_id=city, pincode=pincode, phone_no1=phone_no1,
phone_no2=phone_no2, password=password, username=username, email=email,
first_name=first_name, last_name=last_name, is_active=is_active)
return Response({'status': 1, "message": "User created with this detail"}, status=status.HTTP_201_CREATED)
else:
return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
休息时的反应
{"city":["This field is required."],"state":["This field is required."],"country":["This field is required."]}
上面我提到了DRF应用程序的代码,未经验证,我无法保存用户强>
如果有任何与此相关的帮助,我们将不胜感激。为什么要在未经验证的情况下保存此对象?为什么不让这些字段成为可选字段?@v1k45我怎么能选择它?在dball中我也需要它,您需要这样做,将
required=False
传递到序列化程序中的字段。e、 g.city=CitiesSerializers(required=False)
see问题是我已经从表单视图发送了id。我已在POST中收到密钥,但无法仅使用主键进行存储。int()参数必须是字符串、类似字节的对象或数字,而不是'Countries'CitiesSerializers(required=False)
required False之后