Django模型OneToOneField:"此字段是必需的"管理员错误

时间:2017-01-20 18:35:28

标签: python django model django-admin

当我打开" Placerating"的条目时在管理员中,并尝试在更改任何字段后保存它,Django管理员显示"此字段是必需的"在该领域之上" 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 个答案:

答案 0 :(得分:1)

docs关于null参数到模型字段:

  

对于基于字符串和非字符串的字段,您还需要   如果您希望允许表单中的空值,则设置blank = True   null参数仅影响数据库存储(请参阅blank)。

管理员使用表单进行创建和编辑,因此您希望在管理员中留空的字段中需要blank=True