【发布时间】:2020-06-26 01:45:28
【问题描述】:
我有一个模型-
class Store(models.Model):
store_id = models.AutoField(primary_key=True)
owner = models.ForeignKey(CustomUser, on_delete = models.CASCADE)
name = models.CharField(max_length=75)
description = models.TextField(blank=True)
logo = models.ImageField(upload_to='store/')
contactNumber = PhoneNumberField(blank=True, help_text='Contact number')
start = models.TimeField(auto_now=False, auto_now_add=False)
end = models.TimeField(auto_now=False, auto_now_add=False)
sundayOpen = models.BooleanField(default=False)
mondayOpen = models.BooleanField(default=False)
tuesdayOpen = models.BooleanField(default=False)
wednesdayOpen = models.BooleanField(default=False)
thursdayOpen = models.BooleanField(default=False)
fridayOpen = models.BooleanField(default=False)
saturdayOpen = models.BooleanField(default=False)
我有一个序列化程序,它可以在没有几个字段的情况下获取图像字段(我自己设置 - 商店 ID 和所有者)
class CreateStoreSerializer(serializers.ModelSerializer):
class Meta:
model = Store
fields = ('name','description','logo','contactNumber',
'start','end','sundayOpen','mondayOpen','tuesdayOpen','wednesdayOpen',
'thursdayOpen','fridayOpen','saturdayOpen')
我有一个应该处理请求的视图 - 图像 + JSON
class StoreDetailView(APIView):
parser_classes = (MultiPartParser,FormParser, JSONParser)
permission_classes = (IsAuthenticated,)
def post(self, request,store_id=None):
objj = CreateStoreSerializer(data=request.data)
print(objj.is_valid())
return Response(status=status.HTTP_200_OK)
objj.errors 给出了这条消息 -
{
"name": [ErrorDetail(string="This field is required.", code="required")],
"logo": [ErrorDetail(string="No file was submitted.", code="required")],
"start": [ErrorDetail(string="This field is required.", code="required")],
"end": [ErrorDetail(string="This field is required.", code="required")],
}
序列化程序验证说它无效。我尝试使用 JSON 数据从 Postman 发送请求,但其中的图像字段除外。图像字段选择了与 imageField 同名的 form-data (logo)
我把Content-Type作为application/json。
但是,序列化程序验证结果为假。我该如何解决这个问题?
【问题讨论】:
-
显示您的序列化程序
objj.errors究竟引发了哪些错误。 -
@VishalSingh 错误 -
{'name': [ErrorDetail(string='This field is required.', code='required')], 'logo': [ErrorDetail(string='No file was submitted.', code='required')], 'start': [ErrorDetail(string='This field is required.', code='required')], 'end': [ErrorDetail(string='This field is required.', code='required')]} -
将此添加到您的帖子中。
标签: django django-rest-framework