Tyo*_*nic 1 python django postgresql postgis django-models
我面临的问题是:
AttributeError: module 'django.db.models' has no attribute 'MultiPolygonField'.
Run Code Online (Sandbox Code Playgroud)
当我尝试时它被 django 抛出makemigrations
。旧的迁移文件(仅完成了 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'
Run Code Online (Sandbox Code Playgroud)
问题在于“明星进口”。您确实 import 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
Run Code Online (Sandbox Code Playgroud)
最好的修复方法是显式导入您需要的模型,
from renter.models import MyModel1
from classification_list.models import MyModel2
Run Code Online (Sandbox Code Playgroud)
或导入renter.models
模块
import renter.models as renter_models
import from classification_list.models as classification_models *
# now use renter_models.MyModel1, classification_models.MyModel2
Run Code Online (Sandbox Code Playgroud)
作为一种技巧,您可以交换模型的顺序,但最好使用上述方法之一。
from renter.models import *
from classification_list.models import *
from django.contrib.gis.db import models
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2388 次 |
最近记录: |