Python Django多人关系超过2个应用程序

Python Django多人关系超过2个应用程序,python,django,django-models,uml,Python,Django,Django Models,Uml,我试图创建一种关系,客户可以在其中选择最喜欢的供应商和商店,在我的类图上(参见下图),我有以下关系: 在第一个应用程序中,我有一个person对象,它由供应商和客户机继承 在第二个应用中,我只有一个store对象(它与供应商有反向关系,但它没有显示在类图上,这就是第二个应用被实例化的原因) 问题是,客户端与供应商有多个关系,而另一个与商店有多个关系,但客户端/商店的关系生成了一个错误,原因是app2在app 1之后未显示 有没有办法建立通用的多人关系 因为客户可以有许多供应商和商店,商店可以有许

我试图创建一种关系,客户可以在其中选择最喜欢的供应商和商店,在我的类图上(参见下图),我有以下关系:

在第一个应用程序中,我有一个person对象,它由供应商和客户机继承 在第二个应用中,我只有一个store对象(它与供应商有反向关系,但它没有显示在类图上,这就是第二个应用被实例化的原因)

问题是,客户端与供应商有多个关系,而另一个与商店有多个关系,但客户端/商店的关系生成了一个错误,原因是app2在app 1之后未显示

有没有办法建立通用的多人关系

因为客户可以有许多供应商和商店,商店可以有许多客户,供应商可以有许多客户

我使用的代码是:

class Store(models.Model):
    name = models.CharField("Nome", max_length=100)
    description = models.CharField("Descrição", max_length=300)

    class Meta:
        app_label = 'store'

class Person(models.Model):
    first_name = models.CharField("Primeiro Nome", max_length=100)
    last_name = models.CharField("Ultimo Nome", max_length=100)

    class Meta:
        app_label = 'core'


class Vendor(Person):
    bio = models.TextField("Bio", max_length=300, blank=True)
    last_update = models.DateTimeField("Ultima Atualização", auto_now=True)

    class Meta:
        app_label = 'core'


class Client(Person):
    favorite_stores = models.ManyToManyField(Store)
    favorite_vendors = models.ManyToManyField(Vendor)

    class Meta:
        app_label = 'core'
此代码显示以下错误:

self.models_module = import_module(models_module_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/core/models.py", line 7, in <module>
    from store.models import Store
  File "/store/models.py", line 6, in <module>
    from core.models import Vendor
self.models\u module=导入模块(models\u module\u name)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/_init__.py”,第37行,在导入模块中
__导入(名称)
文件“/core/models.py”,第7行,在
从store.models导入存储
文件“/store/models.py”,第6行,在
从core.models导入供应商
我想在管理中看到的是这么简单:
这里有两个错误。最明显的是,您有一个循环依赖关系:一个模型导入另一个,后者导入第一个。。。您可以通过不导入模型并通过字符串引用其他模型来避免这种情况

另一个错误是我在这里经常看到的。您不希望在客户机模型的两侧都有很多。实际上,客户机是商店和供应商之间多对多关系的链接表。因此,双方实际上都需要外国钥匙

因此,客户应:

class Client(Person):
    favorite_stores = models.ForeignKey('core.Store')
    favorite_vendors = models.ManyToManyField('core.Vendor')

只需添加两个多个关系,而不是导入“存储”模型,直接使用字符串(以避免循环依赖)


看一看:事实上,我根本不明白为什么core需要导入商店,但没关系。我将如何让许多与客户相关的商店为最喜欢的商店使用外键?工作得很有魅力!非常感谢。
class Client(Person):
   favorite_stores = models.ManyToManyField('store.Store')
   favorite_vendors = models.ManyToManyField(Vendor)