强制在Django中最多只有一个表引用一个外键

时间:2014-09-06 00:17:43

标签: python database django

我正在为一个视频游戏慈善流的承诺经理工作,用户可以在那里进行捐赠并将其捐赠的价值作为抽奖中的条目申请或用于游戏内请求或者仅作为普通捐赠。我的模型如下:

class Donation(models.Model):
    donator = models.ForeignKey(User, editable=False)
    donation = models.DecimalField(max_digits=7, decimal_places=2)
    time = models.DateTimeField(default=timezone.now, editable=False)
    note = models.TextField()

我还打算按如下方式创建模型:

class Raffle(models.Model):
    donations = ... # Donation IDs that are allocated to this raffle, perhaps as a ManyToManyField?

class Request(models.Model):
    donations = ... # Donation IDs that are allocated to this request, perhaps as a ManyToManyField?

我的问题:有没有办法让Django强制执行特定的捐赠与最多的一个Raffle或Request相关联?就目前而言,将捐赠分配给两者都是可能的,基本上是对捐赠的重复计算。

我目前正在使用SQLite,虽然其他数据库引擎也是我的选择。

1 个答案:

答案 0 :(得分:0)

您可能希望在GenericForeignKey中添加Donation(我将该字段命名为reward),而不是将ForeignKey放在其他表格中。这是a guide on using GenericForeignKey.

您需要确保GenericForeignKey指向有意义的内容。