【发布时间】:2019-11-13 08:17:19
【问题描述】:
我正在使用 Django Rest Framework,当有效负载来自发布请求时,我有一个 boolean 字段 company_status,该字段为 true,但当用户保存它时变为 False,我无法得到问题所在:
views.py
class CreateUser(APIView):
def get(self,request):
return Response([UserSerializer(dat).data for dat in User.objects.all()])
def post(self,request):
payload=request.data
serializer = UserSerializer(data=payload)
print(payload) # here it shows company_status True
if serializer.is_valid():
instance = serializer.save()
instance.set_password(instance.password)
instance.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
serializers.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id','username','user_image','designation','company_status','age','gender']
def create(self, validated_data):
user = User.objects.create(**validated_data)
return user
def update(self, instance, validated_data):
for k, v in validated_data.items():
setattr(instance, k, v)
instance.save()
return instance
models.py
class User(AbstractBaseUser,PermissionsMixin):
# is_admin=models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
first_name = models.CharField(max_length=30, blank=True)
last_name = models.CharField(max_length=30, blank=True)
date_joined = models.DateTimeField(null=True, blank=True)
user_image=models.ImageField(upload_to=user_main_image_directory_path,null=True,blank=True)
username = models.CharField(
max_length=150,
unique=True,
null=True,
)
is_active = models.BooleanField(default=True)
phonenumber=models.CharField(max_length=13,default="null")
faceid=HashidField
is_booker=models.BooleanField(default=False)
designation=models.CharField(max_length=30,null=True)
company_status=models.BooleanField(null=True,blank=True) # this is the field
object = UserManager()
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = []
age=models.IntegerField(null=True)
gender=models.CharField(max_length=10,null=True,blank=True)
回复
Response:
"id": 1,
"username": "nabeel",
"user_image": "/media/1/opencv_frame_0.jpg",
"designation": "bscs",
"company_status": false,
"age": 23,
"gender": "male"
}
请求负载
Request payload:
payload={
age:25
company_statu:true
designation:bscs
gender:male
password:manofsteel#2
username:xyz
}
不明白为什么它总是在 company_status 中保存 False,我已经打印了来自 post 请求的有效负载并且它显示 True,但是当序列化程序保存时它显示为 false
【问题讨论】:
-
您可以发布您的请求负载吗?
-
添加有问题
-
请求载荷有
company_statu:true;这是一个错字(company_statu 而不是 status)。 -
key应该是
company_status,但是是company_statu, -
不,我错误地没有粘贴到这里,它的 company_status 在请求中
标签: python django django-models django-rest-framework