【问题标题】:AttributeError: module 'django.db.models' has no attribute 'MultiPolygonField'AttributeError:模块“django.db.models”没有属性“MultiPolygonField”
【发布时间】:2019-02-19 14:13:39
【问题描述】:

我遇到了问题:

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' 

【问题讨论】:

  • 您是否在此models.py 文件或其他地方遇到此错误?
  • 不,我没有。下面有答案

标签: python django postgresql django-models postgis


【解决方案1】:

问题在于“明星进口”。您确实导入了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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 2019-07-20
    • 2019-09-30
    • 2020-12-22
    • 1970-01-01
    • 2021-07-30
    相关资源
    最近更新 更多