当app2加载时在app1中创建模型

时间:2019-01-10 14:58:28

标签: django-models django-apps

想象一下,我有一个名为“价目表”的app1和一个名为“市场”的app2。

在Marketplace应用中,我想自动创建一个pricelists.PriceList(如果尚不存在)。该价目表将用于信号中,以根据一些因素自动填充价目表。

目前,我在信号中使用了以下内容:

price_list, _ = PriceList.objects.get_or_create(
    currency='EUR', is_default=False, customer_type='CONS',
    remarks='Marketplace')

我不喜欢这种方法,因为它已经重复了很多次,并且明确希望确定价格表。

我的问题。每次django重新启动时,如何在另一个应用程序中get_or_create一个模型对象?

解决方案

在您的app.__init__.py中手动定义您的AppConfig。在Django 1.10中似乎没有被检测到

default_app_config = 'marketplaces.apps.MarketPlacesConfig'

覆盖您的appconfig ready方法:

class MarketPlacesConfig(AppConfig):
    name = 'marketplaces'

    def ready(self):
        from pricelists.models import PriceList, PriceListItem
        price_list_marketplaces, _ =  PriceList.objects.get_or_create(
            **settings.MARKETPLACES['price_list']

1 个答案:

答案 0 :(得分:1)

AppConfig.ready() django.db.models.signals是我唯一想到的方法。