【问题标题】:Django ImageField overwrites existing path when emptyDjango ImageField 为空时覆盖现有路径
【发布时间】:2014-05-21 00:22:00
【问题描述】:

所以,这就是问题所在: 我目前有一个模型:

类用户数据(模型。模型): 头像 = models.ImageField(verbose_name='Avatar',upload_to='images/profile_pics',blank=True,null=True) doc_type = models.CharField(verbose_name='文档类型',max_length=1,default='0')

还有一个表格:

类 UserCreationForm(forms.ModelForm): 头像 = forms.ImageField(label='Avatar',required=False, error_messages = {'invalid':"仅限图片"}, widget=forms.FileInput) 元类: 模型 = 用户数据

因此,当用户尝试编辑他的数据时,就会出现问题。如果未提供图像,则 db 中的当前图像路径将覆盖为空字符串。有没有办法解决这个问题?

【问题讨论】:

  • 您可以将自己的 save() 方法编程到表单中。
  • 那么,我得先看看图片有没有提供,然后再决定是否保存?
  • 没错,如果您的表单发送了一个空值,请忽略它,否则设置发送值...
  • 为什么要覆盖表单中的头像字段?

标签: django


【解决方案1】:

删除等于Trueblank and null

blank=True

允许字段为空

null=True

允许将空数据保存在数据库中

因此您可以选择最适合您的。

【讨论】:

    【解决方案2】:

    您可以通过将图像字段设为必填来解决问题。

    avatar = forms.ImageField(label='Avatar', required=True, error_messages={'invalid':"Images only"}, widget=forms.FileInput)
    

    【讨论】:

      【解决方案3】:
      avatar = models.ImageField(verbose_name='Avatar',upload_to='images/profile_pics',null=True)
      

      删除blank=True 应该可以解决它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多