Django listview只显示id,在模板中不显示其他字段

Django listview只显示id,在模板中不显示其他字段,django,listview,django-models,django-templates,django-views,Django,Listview,Django Models,Django Templates,Django Views,我是Django的新手。我将从电影数据库中获取的数据创建的数据库添加到Django项目中。我正在使用Django的generic.ListView显示其字段。但是,仅显示每部电影的id 模板: <body> The movies include: <br/> {% for movie in movies_list %} {{ movie.id }} {{ movie.title }} <br/> {{ movie.original_lang

我是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>
app目录中的views.py:

from django.db import models

class Movies(models.Model):
    class Meta:
    app_label = "myapp"
    db_table = "movies"
    managed = False
from django.views import generic
from .models import Movies

class MoviesListView(generic.ListView):
    model = Movies
    template_name = r'myproject/theme/templates/myapp/myapp.html'
我尝试将以下内容添加到上面的MoviesListViewgeneric.ListView类中,但它只是将movie.id的SQL查询增加了一倍:

URL.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
    );"""

没有报告任何错误。我遗漏了什么?

您的模型中没有任何字段,因此Django不知道数据库中的任何列。每个列都需要一个字段


由于这是您自己创建的表,我不明白您为什么通过SQL手动创建它。您应该首先在Django中创建模型,并让Django通过迁移来管理表。

定义模型中您在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 

我可能错了,但是…模型只包含自动生成的id字段。查看以添加模型的字段,或者自己动手,这可能是最好的选择。您创建了数据库表,但没有创建模型。@CoffeeBasedLifeform我使用了Sagar的解决方案,但还想学习inspectdb。我试图通过在shell中键入django admin movies-database move_data.sql>legacy_model.py,来跟踪您链接的文档和在youtube视频中找到的一些代码。但它说:django.core.exceptions.impropertlyconfigured:请求的设置使用了_I18N,但未配置设置。您必须在访问设置之前定义环境变量DJANGO\u SETTINGS\u MODULE或call SETTINGS.configure。然后我尝试了:python manage.py movies-database movie\u data.sql>legacy\u model.py,但它说:DJANGO.db.utils.ConnectionDoesNotExist:连接movie\u data.sql不存在。不知何故,我没有正确地使用它。settings.py确实包含USE_I18N=True。我也没有任何使用inspectdb的经验,但总有一个文档可以这样做。我以前试过这个。但它一直返回一个错误,所以我认为它可能不需要这些,因为它显示的是id ok。结果,我把id和日期字段搞错了。非常感谢。如上所述,我做了,但它不起作用,但结果我犯了几个错误。不管怎样,我也想试试你说的。因此,我在router.py中将def allow_migrateself、db、app_label、model_name=None、**提示函数写入我的model router类,然后尝试进行迁移和迁移,但它说没有要应用的更改。但它确实用我在settings.py中指定的名称创建了一个新数据库。我仍然在寻找下面的例子。我应该澄清一下,除了默认数据库之外,我正在尝试向项目中添加另一个数据库。此附加数据库仅适用于特定应用程序。
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