【发布时间】:2022-01-20 06:51:47
【问题描述】:
我想在我的 django 项目中验证两件事:
-
传递的图像是否有效(具有适当的扩展名、非空等)
-
我有一个函数
isCovering70p返回布尔值,这取决于图像中的对象是否覆盖了 70% 的区域。 现在我还必须在将数据保存到数据库之前检查这一点。如果用户发布的图片不符合这两个条件,则应发送400响应代码。
这是我的models.py:
def user_image_dir_path(instance, filename):
return f"uploads/users/{instance.email}/{filename}"
class UserDetail(models.Model):
email = models.EmailField(max_length=80)
registration_time = models.DateTimeField(auto_now_add=True)
image_path = models.ImageField(upload_to=user_image_dir_path)
image_meta = models.CharField(max_length=100)
@property
def filename(self):
return os.path.basename(self.file.name)
这是我的 serializers.py:
class UserDetailsSerializer(serializers.ModelSerializer):
class Meta:
model = UserDetail
fields = ['full_name', 'email', 'org_id', 'image_path']
通过DRF docs,我了解到我的#1 验证条件将由 DRF/django 处理。
但是,我应该如何以及在哪里照顾 #2 条件?
另外,我想根据isCovering70p 更新我的image_meta 字段。我应该如何以及在哪里放置该更新的逻辑?
【问题讨论】:
标签: python django django-models django-rest-framework