簡體   English   中英

Django)Postgresql模型錯誤

[英]Django ) Postgresql model ERROR

在我的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 = {
'default': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'lkmDB',
    'USER': 'kyungmoon',
    'PASSWORD': '',
    'HOST': '',
    'PORT': '',
}

}

這些都與您發布的代碼無關。

您大概是在純Python外殼中執行此操作; 您應該改為使用python manage.py shell啟動Django shell。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM