2012-07-06 53 views
1
from django.db import models  
from audit_trail.audit import AuditTrail  
from my_base_model.classes import BaseUuidModel          
from my_class_base import BaseClass 

class Mini(BaseMaternalVisitModel): 
    my_class_base = models.ForeignKey(BaseClass) 

class MiniHu(BaseUuidModel): 
    myclass = models.ForeignKey(Mini) 

    class Meta: 
     app_label="classes" 

當我運行python manage.py validate我得到這個錯誤<class>與模型<class>的關係,這無論是尚未安裝或者是抽象的

<MiniHu> has a relation with model <Mini>, which has either not been installed or is abstract. 
+0

什麼是'BaseMaternalVisitModel'?你有沒有syncdb'd並實際創建表? – 2012-07-06 11:05:40

+0

BaseClass是一個抽象類嗎? – Tisho 2012-07-06 11:17:31

回答

0

你已經跑python manage.py syncdb創建必要的數據庫表?你也提到Mini類是BaseMaternalVisitModel的子類,你沒有在這裏導入(儘管如果你得到這個錯誤,我猜你剛剛在這裏發佈時忘了那行)。

當你繼承Django模型時,你應該知道「正常」模型和「抽象」模型之間的區別。當一個模型是「抽象的」時,它不是用syncdb創建的 - 只有當你對它進行子類化時,在這種情況下,只有子類模型在數據庫中創建,包含它自己的所有字段和它從其父類繼承的子類:類。這是「未安裝或抽象」錯誤的原因:就數據庫而言,抽象模型不存在。 Django嘗試訪問數據庫中不存在的模型:或者是因爲您沒有運行syncdb並創建它,或者因爲它是抽象模型並且不存在於數據庫中。

11

地址:

class Meta: 
    app_label="classes" 

類小型,使他們能夠找到相同的應用程序彼此。

+0

它的工作,但我想知道爲什麼? – maazza 2013-08-02 06:49:01

+3

請參閱:https://docs.djangoproject.com/en/dev/ref/models/options/ – Fred 2013-08-05 11:37:01

相關問題