刚开始使用Python / Django框架,如果这很愚蠢,那就很抱歉...但我找不到任何解决方案。
class Dealer(models.Model):
name = models.CharField(max_length=200)
contacts = models.ManyToManyField(Contact)
class Contact(models.Model):
name = models.CharField(max_length=200)
dealers = models.ManyToManyField(Dealer)
我设置了这种关系但是当我运行SyncDB时它不起作用。它告诉我,此行没有定义联系人
contacts = models.ManyToManyField(Contact)
我对编译语言比较熟悉。无论如何告诉python联系类是否存在,或者更好的是,是否存在一种特殊的语法,用于定义这种关系。
答案 0 :(得分:2)
我不认为在两个模型中都需要双向ManyToMany,因为它们是M:N
关系(双向关系)。
您的问题是,Contact
未在执行此代码时定义:
contacts = models.ManyToManyField(Contact)
所以你需要将它包装在引号中以使其起作用
contacts = models.ManyToManyField('Contact')
的文件
我会推荐以下型号:
class Dealer(models.Model):
name = models.CharField(max_length=200)
contacts = models.ManyToManyField('Contact')
class Contact(models.Model):
name = models.CharField(max_length=200)
它会完全符合您的要求。
您可以在此处阅读ManyToMany
关系。相同的链接还介绍了如何处理Reverse m2m queries
答案 1 :(得分:0)
如果您想同时进行两种方式的ManyToMany,则只需要这样做:
class Dealer(models.Model):
name = models.CharField(max_length=200)
contacts = models.ManyToManyField('Contact', blank=True)
class Contact(models.Model):
name = models.CharField(max_length=200)
dealers = models.ManyToManyField('Dealer', through=Dealer.projects.through, blank=True)
我想它将对您有用。