将models.py拆分为几个文件
我正在尝试将models.py我的应用拆分为几个文件:
我的第一个猜测是这样做:
myproject/    settings.py
    manage.py
    urls.py
    __init__.py
    app1/
        views.py
        __init__.py
        models/
            __init__.py
            model1.py
            model2.py
    app2/
        views.py
        __init__.py
        models/
            __init__.py
            model3.py
            model4.py
这不起作用,然后我发现了这个问题,但是在此解决方案中,我仍然遇到问题,当我运行时,出现python manage.py sqlall app1类似以下内容:
BEGIN;CREATE TABLE "product_product" (
    "id" serial NOT NULL PRIMARY KEY,
    "store_id" integer NOT NULL
)
;
-- The following references should be added but depend on non-existent tables:
-- ALTER TABLE "product_product" ADD CONSTRAINT "store_id_refs_id_3e117eef" FOREIGN KEY     ("store_id") REFERENCES "store_store" ("id") DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX "product_product_store_id" ON "product_product" ("store_id");
COMMIT;
我对此不太确定,但我担心有关该部分的内容 The following references should be added but depend on non-existent tables:
这是我的model1.py文件:
from django.db import modelsclass Store(models.Model):
    class Meta:
        app_label = "store"
这是我的model3.py文件:
from django.db import modelsfrom store.models import Store
class Product(models.Model):
    store = models.ForeignKey(Store)
    class Meta:
        app_label = "product"
显然可以,但是我收到了评论alter table,如果我尝试执行此操作,则会发生相同的事情:
class Product(models.Model):    store = models.ForeignKey('store.Store')
    class Meta:
        app_label = "product"
因此,我应该手动运行alter for reference吗?这可能给我带来南方问题吗?
回答:
我将执行以下操作:
myproject/    ...
    app1/
        views.py
        __init__.py
        models.py
        submodels/
            __init__.py
            model1.py
            model2.py
    app2/
        views.py
        __init__.py
        models.py
        submodels/
            __init__.py
            model3.py
            model4.py
然后
#myproject/app1/models.py:    from submodels/model1.py import *
    from submodels/model2.py import *
#myproject/app2/models.py:
    from submodels/model3.py import *
    from submodels/model4.py import *
但是,如果你没有充分的理由,请将model1和model2直接放在app1 / models.py中,并将model3和model4直接放在app2 / models.py中
- -第二部分 - -
这是app1 / submodels / model1.py文件:
from django.db import modelsclass Store(models.Model):
    class Meta:
        app_label = "store"
因此,请更正你的model3.py文件:
from django.db import modelsfrom app1.models import Store
class Product(models.Model):
    store = models.ForeignKey(Store)
    class Meta:
        app_label = "product"
以上是 将models.py拆分为几个文件 的全部内容, 来源链接: utcz.com/qa/426656.html






