Django:只允许一个booleanfield为True

Hel*_*nar 5 python django

拥有这样的模型,我想确保每张专辑中只有一张照片有封面.这将用作相册模型的InlineModelAdmin.

class Photo(models.Model):
    is_cover = models.BooleanField( default=False)
    album = models.ForeignKey('Album')
    image = ImageField(upload_to='uploads')
Run Code Online (Sandbox Code Playgroud)

怎么能实现这一目标?

blu*_*ubb 5

专辑封面上的哪张照片应该是专辑的属性,而不是照片的属性.

您可以在相册中使用对照片的引用,而不是在照片中使用布尔属性.

回答评论:假设"内联模型"意味着我在评论中的假设,您可能需要提供自己的添加表单模板.使用它,您仍然可以提供选项框(而不是复选框),然后Album在处理提交表单内容的代码中正确设置.