Django 两个模型,每个模型都有许多相互引用的字段
我希望男性对女性有很多领域,男性也一样。此处出现的问题是,您只能引用在引用模型之前创建的模型:Django 两个模型,每个模型都有许多相互引用的字段,django,django-models,Django,Django Models,我希望男性对女性有很多领域,男性也一样。此处出现的问题是,您只能引用在引用模型之前创建的模型: class Male(models.Model): name = models.CharField(null=True,blank=True, max_length=300) age = models.IntegerField(null=True,blank=True) d_O_b = models.DateField(null=True,blank=True) des
class Male(models.Model):
name = models.CharField(null=True,blank=True, max_length=300)
age = models.IntegerField(null=True,blank=True)
d_O_b = models.DateField(null=True,blank=True)
description = models.CharField(null=True,blank=True, max_length=300)
#swipes = models.ManyToManyField(Females)
def __str__(self):
return self.name
class Female(models.Model):
name = models.CharField(null=True,blank=True, max_length=300)
age = models.IntegerField(null=True,blank=True)
d_O_b = models.DateField(null=True,blank=True)
description = models.CharField(null=True,blank=True, max_length=300)
swipes = models.ManyToManyField(Male)
def __str__(self):
return self.name
class Male(models.Model):
_inherit = 'Male'
swipes = models.ManyToManyField(Female)
您可以使用模型的名称,而不是模型本身(称为“惰性关系”):
文档:您只需要其中一个型号的M2M。如果您要在model
Female
上注释掉滑动
,并取消对Male
上的滑动的注释,那么它会起作用。或者,您可以将女性
的代码移动到男性
的上方,这样它将首先声明,并且在不更改字段声明的情况下工作。有关最简单的方法,请参阅下面的答案。
class Male(models.Model):
name = models.CharField(null=True,blank=True, max_length=300)
age = models.IntegerField(null=True,blank=True)
d_O_b = models.DateField(null=True,blank=True)
description = models.CharField(null=True,blank=True, max_length=300)
swipes = models.ManyToManyField('Female', related_name="female_swipes")
def __str__(self):
return self.name
class Female(models.Model):
name = models.CharField(null=True,blank=True, max_length=300)
age = models.IntegerField(null=True,blank=True)
d_O_b = models.DateField(null=True,blank=True)
description = models.CharField(null=True,blank=True, max_length=300)
swipes = models.ManyToManyField(Male, related_name="male_swipes")
def __str__(self):
return self.name