我有一个如下所示的模型:
class LibraryEntry(models.Model):
host_lib_song_id = models.IntegerField()
song = models.CharField(max_length=200)
artist = models.CharField(max_length=200)
album = models.CharField(max_length=200)
owning_user = models.ForeignKey(User)
is_deleted = models.BooleanField(default=False)
现在,如果我选择 where is_deleted=False
,host_lib_song_id
和 owning_user
的组合应该是唯一的。我该如何表达呢?
最佳答案
覆盖 validate_unique
如果 is_deleted
为 False
则检查唯一性更合适:
...
def validate_unique(self, exclude=None):
if not self.is_deleted and \
LibraryEntry.objects.exclude(pk=self.pk).filter(host_lib_song_id=self.host_lib_song_id, owning_user=self.owning_user).exists():
raise ValidationError('Some error message about uniqueness required')
super(LibraryEntry, self).validate_unique(exclude=exclude)
关于python - Django 条件唯一在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8245430/