Django 模型上具有相同关系的多个多对多字段

Jas*_*ca1 5 django many-to-many django-models

模型中是否可以多次存在相同的多对多关系(字段具有不同的字段名称)?在进行迁移时,我似乎无法让它工作,因为当我尝试将其复制到不同的名称时,python 抱怨已经存在的关系。

我的模型目前看起来像这样:

class UserLocations(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    locations = models.ManyToManyField(Locations, related_name="users")
Run Code Online (Sandbox Code Playgroud)

我想添加一个名为电子邮件的附加字段,该字段与位置字段相同。那么我会给它一个不同的相关名称吗?

Naf*_*war 3

是的,您可以manytomany与同一模型建立多个关系。related_name对于反向访问,两者必须不同。像这样

class MyModel(models.Model):
    relation_a = models.ManyToManyField(AnotherModel, related_name='rev_relation_a')
    relation_b = models.ManyToManyField(AnotherModel, related_name='rev_relation_b')
Run Code Online (Sandbox Code Playgroud)

这就是 django 抱怨的原因,因为你必须为两者明确定义单独的相关名称。