django中的唯一列值

时间:2016-04-13 16:39:30

标签: python django

我希望location在我的数据库中是唯一的。如果我已将位置设置为logo,那么只要我选择另一个Media对象的位置为logo,我希望以前的Media对象具有location 设置为None或某个默认值。不确定如何执行此操作或查看django文档

中的位置
class Media(models.Model):
    LOCATION = (
        ("video_intro", "Video Intro"),
        ("logo", "Logo")
    )

    TYPE = (
        ("video", "Video"),
        ("gif", "GIF"),
        ("picture", "Picture"),
        ("audio", "Audio")
    )
    name = models.CharField(max_length=50, blank=True)
    location = models.CharField(choices=LOCATION, default=None, max_length=500, null=True)
    uploaded = models.DateTimeField(auto_now_add=True)
    media_type = models.CharField(max_length=50, choices=TYPE, default=None)
    album = models.ForeignKey('Album', blank=True, null=True)
    file = models.FileField(upload_to="media/")
    url = models.CharField(max_length=2083, blank=True, null=True, default=None)
    description = models.TextField(blank=True)

1 个答案:

答案 0 :(得分:1)

我认为您必须在视图中手动执行此操作。 每次添加新介质或修改介质时,都需要检查所设置的位置是否已在表中。如果它已经在表中,那么您必须修改以前的媒体位置并将其设置为无。 删除媒体时要小心,因为如果此媒体有位置,您可能需要将该位置设置回另一个媒体。