模型尚未安装或是抽象的

sin*_*ina 9 python foreign-keys django-models

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

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"
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

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

Dan*_*man 34

通过在同一个应用程序中的单独文件中使用这些文件,您会不必要地混淆自己.

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

ticket_type=models.ForeignKey('core.TicketType')
Run Code Online (Sandbox Code Playgroud)

  • @MihaiH当然不是,因为这是一个不适用于Python的Java概念.那与灵活性有什么关系? (20认同)
  • 我不喜欢Django的一个很好的理由.它缺乏灵活性.Django开发人员是否熟悉每个文件类的概念? (3认同)

and*_*abs 7

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

class Meta:
    app_label = 'core_backend'
Run Code Online (Sandbox Code Playgroud)