python - 如何在 Django 中用数据库中的数据填充 html“选项”标签?
问题描述
我不明白为什么来自数据库的信息没有显示在 html 下拉列表中。我看过很多视频和教程,但出了点问题。部门表不为空。我正在使用 SQLite。
这是我的 html 模板——点击
并且:
模型.py
from django.db import models
class Department(models.Model):
class Meta:
verbose_name_plural = 'Отделы'
department_name = models.CharField(verbose_name='Отдел', max_length=40, editable=True, unique=True)
def str(self) -> str:
return self.department_name
class User(models.Model):
class Meta:
verbose_name_plural = 'Участники'
first_name = models.CharField(verbose_name='Имя', max_length=40)
last_name = models.CharField(verbose_name='Фамилия', max_length=40)
rfid_mark = models.CharField(verbose_name='RFID', max_length=8, editable=True, unique=True)
department = models.ForeignKey(Department, on_delete=models.CASCADE)
datetime = models.DateTimeField(auto_now=True, editable=False)
def str(self) -> str:
return self.first_name + ' ' + self.last_name
视图.py
from django.shortcuts import render
from .forms import UserForm
from .models import Department
def create(request):
form = UserForm()
if request.method == "POST":
form = UserForm(request.POST)
if form.is_valid():
form.save()
context = {'form': form}
return render(request, 'passage/registration.html', context)
def index(request):
query_results = Department.objects.all()
context = {'query': query_results}
return render(request,'passage/registration.html', context)
表格.py
from .models import User
from django.forms import ModelForm
class UserForm(ModelForm):
class Meta:
model = User
fields = ['first_name', 'last_name', 'rfid_mark', 'department']
urls.py(项目)
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
path('sign_up', include('passage.urls')),
path('admin/', admin.site.urls)
] + static(settings.STATIC_URL, document_root =settings.STATIC_ROOT)
urls.py(应用程序)
from django.urls import path
from . import views
urlpatterns = [
path('', views.create, name='user create'),
]
解决方案
首先你们都刷新到错误的领域,因为模型没有department_id
。,你错过了选项的价值。
模板应如下所示。
{% for result in query %}
<option value='{{ result.id }}'>{{ result.department_name }}</option>
{% endfor %}