【问题标题】:Django ) Postgresql model ERRORDjango ) Postgresql 模型错误
【发布时间】: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


    【解决方案1】:

    这与您发布的代码没有任何关系。

    您大概是在一个普通的 Python shell 中执行此操作;你应该用python manage.py shell 来启动Django shell。

    【讨论】:

    • 感谢您的重播!我确实使用 Pycharm IDE 执行了 lkm.py,它与“python manage.py shell”执行的方式不同吗? Pycharm 已经使用 virtualenv 运行。
    • 我对 Pycharm 一无所知,但我猜它有一些配置它以正确运行 Django 的方法。很抱歉,我完全听不懂你的第二条评论。
    猜你喜欢
    • 2012-12-17
    • 2012-03-10
    • 2016-02-01
    • 2016-04-03
    • 2016-11-19
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多