AttributeError:模块“ django.db.models”没有属性“ MultiPolygonField”

时间:2019-02-19 14:13:39

标签: python django postgresql django-models postgis

我遇到了问题:

AttributeError: module 'django.db.models' has no attribute 'MultiPolygonField'. 

当我尝试makemigrations时,它被django抛出。迁移的旧文件(仅完成了1个makemigrations文件)。因此Django,出于某种原因考虑,我导入了django.db.models而不是django.contrib.gis.db

我的models.py代码有问题(原因是代码在“ geom”字段行中断)

from django.contrib.gis.db import models
from renter.models import *
from classification_list.models import*

class ForestryKeys(models.Model):

    id = models.IntegerField(primary_key=True)
    df_forestry = models.TextField(blank=True, null=True),
    geom = models.MultiPolygonField(geography=True, null=True, blank=True, verbose_name='gmtry')

    class Meta:
        managed = True
        verbose_name = 'frst'
        verbose_name_plural =  'frtses' 

1 个答案:

答案 0 :(得分:2)

问题是“星级进口”。您确实导入了django.contrib.gis.db.models,但随后在以下几行中将其替换。

from django.contrib.gis.db import models
from renter.models import *  # this could replace models with django.db.models
from classification_list.models import *  # and so could this

最好的解决方法是显式导入所需的模型,

from renter.models import MyModel1
from classification_list.models import MyModel2  

或导入renter.models模块

import renter.models as renter_models
import from classification_list.models as classification_models *  
# now use renter_models.MyModel1, classification_models.MyModel2

作为一种技巧,您可以交换模型的顺序,但是最好使用上面的一种方法。

from renter.models import *
from classification_list.models import *  
from django.contrib.gis.db import models