当我从django中的抽象模型继承时出错

时间:2016-03-01 20:02:35

标签: django-models django-1.8

首先,我已经阅读了很多内容,但我找不到答案。

我有一个django项目,在该项目中我有一些应用程序,更具体地说是

DJANGO-PROJECT
    *--------- app_base
    *--------- app_equipment
    *--------- app_customer


then app_base is the app for code that is common to the other apps, in my case i have a models.py file a class who has a class:

from django.db import models
from datetime import date
import project_name.utilies as ut

class BaseModel():   
    status = models.CharField( max_length = 1, choices = ut.STATUS_CHOICES, default = 1 )
    created_date =  models.DateField( default = date.today ) 
    last_modified_date = models.DateField( null = True )
    deleted_date = models.DateField( null = True )
    createdby_id = models.IntegerField( default = 0 )
    modifiedby_id = models.IntegerField( default = 0 )

    class Meta:
        abstract=True

然后在app_equipment中我有另一个models.py文件,在该文件中我有下一个类:

from django.db import models
from app_base.models import BaseModel

class Equipment(BaseModel):
    name = models.CharField( max_length = 250 , default="")
    image = models.CharField( max_length = 250 , default="" )
    desc = models.TextField( default="")
    horsepower = models.IntegerField( default = 0 )
    fuelcapacity = models.IntegerField( default = 0 )
    model = models.CharField( max_length = 250 , default="" ) 
    year = models.IntegerField( default = 0 , )
    purchasecost = models.IntegerField( default = 0 )

    class Meta:    
        db_table = "equipment"

所以设备从BaseModel扩展或者我在django文档中读到的错误是当我想执行commmand makemigrations时我得到一个错误:

您正在尝试添加一个不可为空的字段' id'到没有默认的设备;我们不能这样做(数据库需要一些东西来填充现有的行)。 请选择一个修复:  1)现在提供一次性默认值(将在所有现有行上设置)  2)退出,让我在models.py

中添加默认值

并且我不知道如何解决它,我一直在尝试使用id字段,没有任何反应,有些人说错误是要清除,但差异文件和应用程序的哪一部分是清楚的?

当我不继承抽象模型时,错误得到解决,但我想在其他模型的每个表中使用BaseModel中的所有属性

先谢谢你们

0 个答案:

没有答案