我创建了一个简单的Django
应用程序,它试图访问fruits
数据库中存在的名为PostgreSQL
的表并显示其内容。我按照官方的Django
文档进行操作,并根据我的理解在下面的代码中实现。但是下面的程序不完整我相信fruits.objects.all()
无法获取任何数据。我遗失了一些可以任何人指出的东西,任何帮助都会受到赞赏。
表:水果
models.py
from django.db import models
class fruits(models.Model):
ID = models.CharField(max_length=20)
Name = models.CharField(max_length=20)
def __str__(self):
return self.Name
views.py
from database.models import fruits
def index(request):
data = fruits.objects.all()
print(len(data))
for item in data:
print(item)
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': '<database_name>',
'USER': '<user_name>',
'PASSWORD': '<password>',
'HOST': '<host_name>',
'PORT': '',
}
}
答案 0 :(得分:1)
默认情况下,Django会为模型创建新表appname_modelname
。因此,在您的情况下,此查询集fruits.objects.all()
从app_fruits
表中获取数据,而不是fruits
。您可以使用db_table
元选项指定表名。例如,要将模型fruits
与现有表格fruits
相关联,请将以下Meta
添加到模型中:
class fruits(models.Model):
ID = models.IntegerField(max_length=20)
Name = models.CharField(max_length=20)
class Meta:
db_table = 'fruits'
def __str__(self):
return self.Name
<强> UPD 强>
Django希望id
字段默认为主键,而不是ID
,以将此primary_key
选项更改为ID
字段:
ID = models.IntegerField(max_length=20, primary_key=True)