本文介绍了ManyToMany的独特组合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试在给定的时间为播放器创建唯一的可用性状态。代码如下:
I'm trying to create a unique Availability status for Player on given Hour. Here goes the code:
class Player(models.Model): first_name = models.CharField(max_length=200) last_name = models.CharField(max_length=200) class Hour(models.Model): date = models.DateTimeField() players = models.ManyToManyField(Player, blank=True, through='Availability') class Availability(models.Model): player = models.ForeignKey(Player, on_delete=models.CASCADE) hour = models.ForeignKey(Hour, on_delete=models.CASCADE) available = models.BooleanField()我的问题是,当前可以几次添加相同的可用性-我想以编程方式将其可用性限制为每个组合一个。
My problem is that it's currently possible to add same Availability few times - I want to programatically limit it to just one per combination.
谢谢!
推荐答案您可以在 throuh表(在您的情况下为可用性表)上拥有unique_together
You can have the unique_together on the "throuh" table (in your case the Avaliability Table)
class Availability(models.Model): player = models.ForeignKey(Player, on_delete=models.CASCADE) hour = models.ForeignKey(Hour, on_delete=models.CASCADE) available = models.BooleanField() class Meta: unique_together = (('player','hour'),)然后使用get_or_create进行添加/修改:
And then use the get_or_create for adding/modifying:
obj,created = Availability.objects.get_or_create(hour=hour,player=player)更多推荐
ManyToMany的独特组合
发布评论