2017-11-20 1 views
0

Wenn ich python3 manage.py makemigrations, ich unten Fehlermeldung erhalten:muss die Form 'app_label.ModelName' sein „% Modell Valueerror:. Ungültige Referenzmodell

... 

    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/fields/related.py", line 348, in contribute_to_class 
    lazy_related_operation(resolve_related_class, cls, self.remote_field.model, field=self) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/fields/related.py", line 85, in lazy_related_operation 
    return apps.lazy_model_operation(partial(function, **kwargs), *model_keys) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/fields/related.py", line 83, in <genexpr> 
    model_keys = (make_model_tuple(m) for m in models) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/utils.py", line 23, in make_model_tuple 
    "must be of the form 'app_label.ModelName'." % model 
ValueError: Invalid model reference '管理员后台.产品配置.qiyun_admin_productconfig_cloudserver.HostType 

Aber mein Unterkuntstyp Modellpfad ist dies:
管理员后台.产品配置.qiyun_admin_productconfig_cloudserver.models.HostType ..

die Zurückverfolgungs weniger die .models in es ich weiß nicht, warum

Mein Projektverzeichnis ist unten:.

Bitte AUFMERKSAMKEIT, der Serializer und Ansichten (Serializer Ansicht) ist unter dem api Verzeichnis.

und die Einstellungen:

... 
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
PARENT_DIR = os.path.abspath(os.path.join(BASE_DIR, os.pardir)) 

# 增加sys目录 
sys.path.insert(0, BASE_DIR) 
sys.path.insert(0, os.path.join(PARENT_DIR,'旗云管理员后台')) 
sys.path.insert(0, os.path.join(PARENT_DIR,'用户前台')) 
sys.path.insert(0, os.path.join(PARENT_DIR,'用户管理员后台')) 
... 

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    .... 
    '旗云管理员后台.用户管理.qiyun_admin_useradminmanage', # 
    '旗云管理员后台.用户管理.qiyun_admin_usergroups', # 

    '旗云管理员后台.产品配置.qiyun_admin_productconfig_common', # 
    '旗云管理员后台.产品配置.qiyun_admin_productconfig_cloudserver', # 

    '旗云管理员后台.财务管理.qiyun_admin_financialmanage_ordermanage', # 
    '旗云管理员后台.财务管理.qiyun_admin_financialmanage_financialmanage', 

EDIT

Ich habe zwei Modelle (AvailableArea, AddressRegion) in der gleichen models.py (旗云管理员后台.产品配置.qiyun_admin_productconfig_cloudserver.):

class AvailableArea(models.Model): 
    name = models.CharField(max_length=8) 
    addressregion = models.ForeignKey(AddressRegion, default=1, related_name='availableareas', on_delete=models.CASCADE) 

    def __str__(self): 
     return self.name 
    def __unicode__(self): 
     return self.name 

class AddressRegion(models.Model): 
    name = models.CharField(max_length=8) 

    def __str__(self): 
     return self.name 
    def __unicode__(self): 
     return self.name 

Sie sehen, sollte ich noch speci fied die addressregion = models.ForeignKey('qiyun_admin_productconfig_cloudserver.AddressRegion',...)?

Und wenn andere Modelle, wenn ForeignKey auf AddressRegion verweist, habe ich es auch importiert.


+0

Ihre Frage wäre klarer, wenn der Code (in models.py?) Angezeigt wird, der den Fehler verursacht. – Alasdair

+0

@Alasdair Siehe meine Edit, mein Freund /. – 244boy

+0

@Alasdair My EDIT vielleicht lassen Sie meine Frage wissen, und ich möchte nur mehr Verzeichnis verwenden, um meine Apps zu gruppieren, lassen Sie meine Apps in einem guten Zustand, so dass ich diesen Beitrag folgen: https://Stackoverflow.com/questions/47323242/can-i-use-ein-Verzeichnis-enthält-ein-Paare-App-Verzeichnis. Dann bekomme ich meine Probleme. – 244boy

Antwort

1

Die label Ihrer App '旗云管理员后台.产品配置.qiyun_admin_productconfig_cloudserver' ist 'qiyun_admin_productconfig_cloudserver' (die letzte Komponente nur).

Wenn Sie einen Fremdschlüssel definieren, sollten Sie die Bezeichnung und nicht den vollständigen Pfad der App verwenden.

host_type = models.ForeignKey('qiyun_admin_productconfig_cloudserver.HostType', ...) 
+0

Entschuldigung, ich verstehe Ihren Kommentar nicht. – Alasdair

+0

Es tut mir leid, die Methode funktioniert nicht für mich. Ich weiß nicht warum. – 244boy

Verwandte Themen