Django模型A只能有一个模型B的实例

Django模型A只能有一个模型B的实例,django,Django,我有两种型号: class ModelA(models.Model): name = models.CharField(max_length=256) class ModelB(models.Model): user = models.ForeignKey(MyUser) model_a = models.ForeignKey(ModelA) points = models.IntegerField(default=0) 如何防止创建相同的对象?例如: 我有M

我有两种型号:

class ModelA(models.Model):
    name = models.CharField(max_length=256)

class ModelB(models.Model):
    user = models.ForeignKey(MyUser)
    model_a = models.ForeignKey(ModelA)
    points = models.IntegerField(default=0)
如何防止创建相同的对象?例如:

我有ModelA的A、B、C实例和两个用户。在ModelB中,我需要这样的关系:

User1只能有一个指向A、一个指向B等的“链接”。 用户2也一样。他只能向每个ModelA实例提供一个“链接”

每个用户在ModelB中可以有一条与ModelA关联的记录

例如:(User1,A,100),(User2,A,50) 但是如果我想做这样的事

...create(user=User1, model_a=A, points=50)

我需要从数据库记录中获取user1、A和ad点,而不是创建另一个类似的模型。

因此,您希望所有
用户
模型A的对都是唯一的。您可以在模型的元数据中一起使用
unique\u
进行指定

unique_together=(“司机”、“餐厅”),)

这是一个元组的元组,当 一起考虑。它在Django管理中使用,并在 数据库级别(即适当的唯一语句) 包括在CREATETABLE语句中)

因此,请按以下方式修改您的模型:

class ModelB(models.Model):
    user = models.ForeignKey(MyUser)
    model_a = models.ForeignKey(ModelA)
    points = models.IntegerField(default=0)

    class Meta:
        unique_together = (('user', 'model_a'),)

因此,您希望所有
user
model_a
对都是唯一的。您可以在模型的元数据中一起使用
unique\u
进行指定

unique_together=(“司机”、“餐厅”),)

这是一个元组的元组,当 一起考虑。它在Django管理中使用,并在 数据库级别(即适当的唯一语句) 包括在CREATETABLE语句中)

因此,请按以下方式修改您的模型:

class ModelB(models.Model):
    user = models.ForeignKey(MyUser)
    model_a = models.ForeignKey(ModelA)
    points = models.IntegerField(default=0)

    class Meta:
        unique_together = (('user', 'model_a'),)

我不理解你的问题,如果存在一对一的关系,那么你应该将其定义为这样的关系。如果我在模型a中添加一对一,那么我不能将同一个模型a添加到不同的用户。那么用户是1,其中模型a是多的,所以外键需要在用户上定义。我不理解你的问题,如果存在一对一关系,那么您应该将其定义为这样的关系:如果我在模型a中添加一对一,那么我不能将同一个模型a添加到不同的用户。然后用户是1,其中模型a是多个,因此外键需要在用户上定义谢谢,您知道我在哪里可以捕捉到这种独特的期望吗?(当它发生时)以前添加了一些自己的代码?谢谢,你知道我在哪里可以捕捉到这种独特的期望吗?(发生时)以前是否添加了一些自己的代码?