【发布时间】:2016-05-29 07:04:39
【问题描述】:
在我的 django 应用程序的 models.py 中,我有一个模型如下:
from django.db import models
from django.contrib.postgres.fields import *
class lkmModel(models.Model):
#Profile Image
profileUrls = ArrayField(base_field=models.TextField,size=5)
#profileUrls = models.TextField()
"""profileUrl2 = models.TextField()
profileUrl3 = models.TextField()
profileUrl4 = models.TextField()
profileUrl5 = models.TextField()"""
#Profile Basic
name = models.CharField(max_length=20)
status = models.CharField(max_length=20)
age = models.IntegerField()
residence = models.CharField(max_length=20)
bloodType = models.CharField(max_length=20)
religion = models.CharField(max_length=20)
#KEY_WORD
personaltiy = models.TextField()
appearance = models.TextField()
hobby = models.TextField()
ability = models.TextField()
idealType = models.TextField()
career = models.TextField()
best = models.TextField()
badges = ArrayField(base_field=models.CharField(max_length=10))
manual = models.TextField()
def __str__(self):
return self.name
我正在尝试在 lkm.py 的 models.py 中创建 lkmModel 的实例 lkm.py的对应代码如下:
from myApp.models import lkmModel
def createModel(self,pictures,basics,keywords,badges,manual):
lkmModelOne = lkmModel(profileUrls = pictures, name = basics[0] , status = basics[1] ,
bloodType = basics[2] , age = basics[3] , religion = basics[4] , residence = basics[5],
personality= keywords[0], appearance = keywords[1] , hobby = keywords[2] , ability = keywords[3],
idealType = keywords[4], career = keywords[5] , best = keywords[6], badges = badges , manual = manual)
lkmModelOne.save()
执行lkm.py时出现如下错误:
Traceback (most recent call last):
File "/Users/kyungmoon/projectDicrectory/project/myApp/lkm.py", line 8, in <module>
from myApp.models import lkmModel
File "/Users/kyungmoon/projectDicrectory/project/myApp/models.py", line 2, in <module>
from django.contrib.postgres.fields import *
File "/Users/kyungmoon/venv/myvenv/lib/python3.4/site-packages/django/contrib/postgres/fields/__init__.py", line 1, in <module>
from .array import * # NOQA
File "/Users/kyungmoon/venv/myvenv/lib/python3.4/site-packages/django/contrib/postgres/fields/array.py", line 207, in <module>
class ArrayLenTransform(Transform):
File "/Users/kyungmoon/venv/myvenv/lib/python3.4/site-packages/django/contrib/postgres/fields/array.py", line 209, in ArrayLenTransform
output_field = IntegerField()
File "/Users/kyungmoon/venv/myvenv/lib/python3.4/site-packages/django/db/models/fields/__init__.py", line 166, in __init__
self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE
File "/Users/kyungmoon/venv/myvenv/lib/python3.4/site-packages/django/conf/__init__.py", line 55, in __getattr__
self._setup(name)
File "/Users/kyungmoon/venv/myvenv/lib/python3.4/site-packages/django/conf/__init__.py", line 41, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
如您所见,错误来自 postgresql 和 postgresql 的 arrayField。 但是在 models.py 中,我以正确的方式创建了 lkmModel,不是吗?
为什么会这样?
我确实在我的本地机器上安装了 postgresql,并为此创建了一个名为 lkmDB 的数据库和一个表。 我在项目中 settings.py 中的 DATABASES 设置如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'lkmDB',
'USER': 'kyungmoon',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
【问题讨论】:
标签: python django postgresql django-models