首页 > 解决方案 > 如何在 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'),
]

标签: pythonhtmldjangodjango-models

解决方案


首先你们都刷新到错误的领域,因为模型没有department_id。,你错过了选项的价值。

模板应如下所示。

{% for result in query %}
      <option value='{{ result.id }}'>{{ result.department_name }}</option>
{% endfor %}

推荐阅读