我正在尝试使用中的模型类的值定义一个常量,以为我的其中一个模型settings.py
提供动态定义的FK:
from catalog.models import Product
PRODUCT_MODEL = Product
毫不奇怪,它会导致AppRegistryNotReady
异常:
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
因为没有django.setup()
方法调用。
如果我加
import django
django.setup()
在模型导入之前,AppRegistryNotReady
我得到了异常,而不是异常
AttributeError: 'Settings' object has no attribute 'PRODUCT_MODEL'
当我使用
from django.conf import settings
...
product = models.ForeignKey(
settings.PRODUCT_MODEL,
related_name='order_items')
有没有什么办法可以做到这一点而没有错误呢?
我正在使用Python 3.5和Django 1.9.5。
您不应该导入模型或调用django.setup()
设置文件。
而是使用字符串来引用您的模型。
PRODUCT_MODEL = 'catalog.Product'
然后,在模型中,可以使用该设置。
product = models.ForeignKey(
settings.PRODUCT_MODEL,
related_name='order_items',
)
请注意,该AUTH_USER_MODEL
设置使用这样的字符串,您不会在设置文件中导入用户模型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句