ManyToMany的独特组合

编程入门 行业动态 更新时间:2024-10-23 22:33:14
本文介绍了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的独特组合

本文发布于:2023-11-29 22:56:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1647873.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:组合   独特   ManyToMany

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!