我是Django的新手。我添加了一个数据库,我根据从电影数据库中获取的数据创建了我的Django项目。我正在使用Django的generic.ListView
来显示它的字段。但是,只有每部电影的id
显示。
模板:
<body>
The movies include: <br/>
{% for movie in movies_list %}
{{ movie.id }} {{ movie.title }} <br/>
{{ movie.original_language }} <br/>
{{ movie.overview }}
{% endfor %}
</body>
尽管代码中有movie.title
,movie.original_language
和movie.overview
,但django-debug-toolbar在我加载页面时只显示了一个查询:SELECT "movies"."id" FROM "movies"
。< / p>
apps目录中的models.py:
from django.db import models
class Movies(models.Model):
class Meta:
app_label = "myapp"
db_table = "movies"
managed = False
app目录中的views.py:
from django.views import generic
from .models import Movies
class MoviesListView(generic.ListView):
model = Movies
template_name = r'myproject/theme/templates/myapp/myapp.html'
我尝试将以下内容添加到上面的class MoviesListView(generic.ListView)
,但它只是将movie.id
的SQL查询加倍:
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['movies_list'] = Movies.objects.all()
return context
urls.py与settings.py:
位于同一目录中from django.contrib import admin
from django.urls import path
from django.conf import settings
from myapp import views as myapp_views
urlpatterns = [
path('admin/', admin.site.urls),
path('myapp/', myapp_views.MoviesListView.as_view(), name='movie_list'),
]
以下是我如何根据json文件中的数据创建表格,唯一的补充是id
,但没有提供:
create_table_movie = """CREATE TABLE movies (
id INTEGER PRIMARY KEY,
adult TEXT,
original_language TEXT,
original_title TEXT,
title TEXT,
overview TEXT,
release_date DATE,
genres TEXT,
production_countries TEXT,
videos TEXT,
images TEXT
);"""
没有报告任何错误。我错过了什么?
答案 0 :(得分:1)
定义模型中您在sql视图中提到的所有字段。
class Movies(models.Model):
id = models.AutoField(primary_key=True)
adult = models.TextField()
original_language = models.TextField()
original_title = models.TextField()
title = models.TextField()
overview = models.TextField()
release_date = models.DateField()
genres = models.TextField()
production_countries = models.TextField()
videos = models.TextField()
images = models.TextField()
class Meta:
app_label = "myapp"
db_table = "movies"
managed = False
答案 1 :(得分:0)
您的模型中没有任何字段,因此Django不了解数据库中的任何列。每列需要一个字段。
由于这是您自己创建的表格,因此我不明白您为何通过SQL手动完成此操作。您应该首先在Django中创建模型,然后让Django通过迁移来管理表。