Django模型OneToOneField:管理员中的“此字段是必需的”错误
Posted
技术标签:
【中文标题】Django模型OneToOneField:管理员中的“此字段是必需的”错误【英文标题】:Django model OneToOneField : "This field is required" error in admin 【发布时间】:2017-06-05 20:00:36 【问题描述】:当我在 Admin 中打开“Placerating”条目,并在对任何字段进行更改后尝试保存它时,Django admin 在“Pic”字段上方显示“此字段是必需的”。
class Placerating(models.Model):
theplace = models.ForeignKey('ThePlace', on_delete=models.CASCADE, null=True, related_name='placeratings')
pic = models.OneToOneField('fileupload.Picture', on_delete=models.SET_NULL, null=True)
def __unicode__(self):
return self.theplace.name
class Picture(models.Model):
def set_upload_to_info(self, path, name):
self.upload_to_info = (path, name)
file = ImageField(max_length=500, upload_to=user_directory_path)
def filename(self):
return os.path.basename(self.file.name)
theplace = models.ForeignKey(ThePlace, null=True, blank=True, related_name='pictures')
def __unicode__(self):
return str(self.id)
def save(self, *args, **kwargs):
super(Picture, self).save(*args, **kwargs)
我用表单创建条目没有问题,所以我不明白为什么管理员现在会要求填写此字段。
【问题讨论】:
【参考方案1】:从docs 关于null
参数到模型字段:
对于基于字符串和非基于字符串的字段,您还需要 如果您希望在表单中允许空值,则设置 blank=True,因为 null 参数只影响数据库存储(见blank)。
管理员使用表单进行创建和编辑,因此您需要在希望能够在管理员中留空的字段中填写blank=True
。
【讨论】:
以上是关于Django模型OneToOneField:管理员中的“此字段是必需的”错误的主要内容,如果未能解决你的问题,请参考以下文章
带有模型 OneToOneField 的 django-jquery-file-upload
十一 .Django 一对一表OneToOneField (ORM)
Django模型中的OneToOneField和ForeignKey有啥区别
Django模型中的OneToOneField和ForeignKey有什么区别?