django抽象模型继承导入



我想知道如何将抽象模型导入另一个应用

world_elements保持:

class Location(models.Model):
    """
    Holds x,y coordinates of a virtual 2d map. 
    """
    x = models.IntegerField()
    y = models.IntegerField()
    class Meta:
        abstract = True
    def __unicode__(self):
        return "%s, %s" % (self.x, self.y)

现在在另一个应用程序中我尝试:

from world_elements.models import Location
class NpcTown(Location):
    """
    A town with their coordinates trianinggrounds quest office and all other relevant attributes
    """
    # general town information
    name = models.CharField(max_length = 63)
    flavor = models.TextField(max_length = 511)
    guild = models.ForeignKey(NpcGuild)
    # locations
    trainingground = models.ForeignKey(TrainingGround, null=True)
    def __unicode__(self):
        return self.name

但现在我得到了ImportError:无法导入名称位置

如何导入抽象模型?

稍微简化一下类的名称,以下对我有效在Django 1.7中,这是目前最新的稳定版本写

目录布局

    project
          _ apps
              _ __init__.py
              _ A
              _ B
          _ config
              _ __init__.py
              _ settings.py
              _ urls.py
              _ wsgi.py
          _ data
          _ makefile
          _ manage.py
          _ README.md

在上文中,应用程序A包含抽象模型。B使用它,作为如下:

抽象类

class AModel(Model):
    ...
    class Meta:
        abstract = True

然后

混凝土等级

from apps.A.models import AModel
class BModel(AModel):
    ...
    blah = "ayyo"

请注意,应用程序、A和B都必须包含一个__init__.py文件。

不要害怕打破Django目录布局惯例由CCD_ 4施加。这样做会解放你的思想你会喜欢把事情组织得井井有条。

另一个有助于调试模块导入的东西是简单的printing导入的模块。然后你就可以知道实际解决了什么问题。例如:

from apps.A.models import AModel
print AModel # <class 'apps.A.models.AModel'>

和:

import apps
print apps # <module 'apps' from '/home/g33k/gits/checkouts/my/project/apps/__init__.pyc'>

在这样的正常结构中:

my_project
  - /my_project
    - /settings.py
  - /app1
    - /models.py
      * class Model1...
  - /app2
    - /models.py
      * class Model2...

从app1/models.py这对我有效:

from django.db import models
from my_project.app1.models import Model1
class Model2(Model1):
    ...

使用Django 11.1

尝试

from world_elements import Location

最新更新