Django抱怨django.contrib.gis.measure.Distance不是有效的模型

时间:2014-10-17 20:22:58

标签: python django django-models

环境详情:

  • Ubuntu GNOME 14.04
  • Python 2.7.6(使用virtualenv)
  • Django 1.7(在virtualenv内)
  • Eclipse Kepler SR2(内部版本号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.py,里面的Distance模型似乎是一个有效的模型。 为什么Django认为Distance不是有效的模型?

1 个答案:

答案 0 :(得分:1)

django.contrib.gis.measure import Distance不是模型,它只是一个扩展MeasureBase的类,它扩展了对象。

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

所以,&#34;为什么Django认为距离不是一个有效的模型?&#34; - 因为它不是一个模型。 Django中的模型是通过扩展models.Model创建的。