模型尚未安装或是抽象的

时间:2014-01-10 12:52:41

标签: python django-models foreign-keys

当我尝试迁移我的代码时,我收到此错误。 这是我的代码和类:

from django.db import models
from core.models import Event

class TicketType(models.Model):
    name = models.CharField(max_length=45)
    price = models.DecimalField(max_length=2, decimal_places=2, max_digits=2)
    type = models.CharField(max_length=45)
    amount = models.IntegerField()
    event = models.ForeignKey(Event)

class Meta:
    app_label = "core"


import datetime
from django.core.serializers import json
from django.db import models
from core.models import User


class Event(models.Model):
    page_attribute = models.TextField()
    name = models.TextField(max_length=128 , default="New Event")
    description = models.TextField(default="")
    type = models.TextField(max_length=16)
    age_limit = models.IntegerField(default=0)
    end_date = models.DateTimeField(default=datetime.datetime.now())
    start_date = models.DateTimeField(default=datetime.datetime.now())
    is_active = models.BooleanField(default=False)
    user = models.ForeignKey(User)
    ticket_type=models.ForeignKey('core.models.ticket_type.TicketType')

    class Meta:
            app_label = "core"

这是我得到的错误:

  

CommandError:一个或多个模型未验证:   core.event:'ticket_type'与模型core.models.ticket_type.TicketType有关系,   没有安装或是抽象的。

4 个答案:

答案 0 :(得分:33)

将这些文件放在同一个应用程序中的单独文件中会让您自己感到困惑。

但是您的问题是由您引用目标模型的方式引起的。您不使用模型的完整模块路径:您只需使用'app_name.ModelName'。所以在你的情况下它应该是:

ticket_type=models.ForeignKey('core.TicketType')

答案 1 :(得分:7)

另一个问题可能是在单独的文件中使用多个模型时缺少语句,如:

class Meta:
    app_label = 'core_backend'

答案 2 :(得分:2)

如果模型文件中存在阻止正确加载的错误,也会出现此错误。例如,在models.py

from third_party_module_i_havent_installed import some_method

答案 3 :(得分:1)

我在INSTALLED_APPS设置中未放置第三方应用时遇到此错误。