2014-10-17 61 views
0

環境的詳細信息:Django的抱怨django.contrib.gis.measure.Distance不是一個有效的模型

  • Ubuntu的GNOME 14.04
  • 的Python 2.7.6(使用的virtualenv)
  • 的Django 1.7(在virtualenv中)
  • Eclipse的開普勒SR2(版本ID 20140224-0627)
  • 的PyDev內3.8.0.201409251235

我一個模型中有以下內容:

from django.db import models 
from django.contrib.gis.measure import Distance 
... 

class MyModel(models.Model): 
    ... 
    distance = models.ForeignKey(Distance) 
    ... 

模型位於/home/user/workspace/DjangoProject/MyApp/models/mymodel.py。在models文件夾中,我有一個__init__.py其中進口MyModel

from MyApp.models.mymodel import MyModel

當我嘗試運行服務器(python manage.py runserver)或模型同步到數據庫(python manage.py syncdb),我收到以下錯誤:

AssertionError: ForeignKey(<class 'django.contrib.gis.measure.Distance'>) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string u'self'

我檢查django/contrib/gis/measure.pyDistance模型中似乎是一個有效的模式。 爲什麼Django認爲Distance不是一個有效的模型?

+0

爲什麼在應用程序文件中有模型文件夾?我認爲我從未見過這種情況。將mymodel.py移入myapp文件夾時,您會得到相同的結果嗎? – 2014-10-17 20:48:02

+0

@ChrisHawkes從我讀過的內容來看,這似乎是將大型models.py分解爲多個文件的標準方式 – 5ELuqLbb85Hk 2014-10-18 00:07:25

回答

1

django.contrib.gis.measure import Distance不是一個Model,它只是一個擴展了MeasureBase類的對象。

class MeasureBase(object):¬                              
    STANDARD_UNIT = None¬ 
    ALIAS = {}¬ 
    UNITS = {}¬ 
    LALIAS = {}¬ 

所以,「爲什麼Django認爲Distance不是一個有效的模型?」 - 因爲它不是一個模型。 Django中的模型通過擴展models.Model創建。