对于djang中的同一记录,不允许在不同列中使用相同的值

2024-09-30 14:30:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在django建立一个网站,允许玩家与其他玩家匹配。我有以下型号:

class Session(models.Model):
    # id = AutoField(primary_key=True) added automatically.
    sport = models.ForeignKey('Sport', unique=False, blank=False, null=False, on_delete=models.CASCADE, )
    hostplayer = models.ForeignKey('Member', unique=False, blank=False, null=False, on_delete=models.CASCADE, related_name='member_host', )
    guestplayer = models.ForeignKey('Member', unique=False, blank=True, null=True, on_delete=models.CASCADE, related_name='member_guest', )
    date = models.DateField(blank=False, null=False, )
    time = models.TimeField(blank=False, null=False, )
    city = models.ForeignKey('City', unique=False, blank=False, null=False, on_delete=models.CASCADE, )
    location = models.CharField(max_length=64, unique=False, blank=False, null=False, )
    price = models.FloatField(unique=False, blank=False, null=False, default=0, )
    details = models.TextField(unique=False, blank=True, null=False, )

    def __unicode__(self):
        return unicode(self.id)

如您所见,hostplayer和guestplayer都是成员表的外键。在

问题是,当我进入django admin时,如果我选择hostplayer为jack,那么我也可以选择guestplayer为jack。这显然是错误的,因为球员不能和自己比赛。在

如何限制guestplayer的选项不包括hostplayer

另外,在模型级别,是否有方法指定同一元组中一个属性的值必须不同于另一个属性的值?一个显而易见的方法是使用表单并验证它们,但我很好奇是否存在更简单的替代方法。在


Tags: django方法falsetrueonmodels玩家delete