You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django表单下拉选项未显示问题求助

解决Django待办应用分类下拉框无选项问题

你的问题出在外键关联的是Category模型,下拉框读取的是数据库中Category表的记录,而非模型里定义的choices选项。你没有在数据库中添加Personal和Professional这两个分类数据,所以下拉框为空。以下是两种解决思路:

思路1:不使用独立Category模型,直接用字段choices

如果不需要后续扩展更多分类,直接修改Item模型,将category字段改为带choices的CharField:

from django.db import models

class Item(models.Model):
    CATEGORY = (('Personal', 'Personal'), ('Professional', 'Professional'))
    created_at = models.DateTimeField(auto_now=True)
    task = models.CharField(max_length=200)
    completed = models.BooleanField(default=False)
    # 替换外键为带choices的CharField
    category = models.CharField(max_length=100, null=True, choices=CATEGORY)

    def __str__(self):
        return f"{self.created_at}: {self.task}"

修改后执行python manage.py makemigrations和python manage.py migrate更新数据库,表单的下拉框会直接显示这两个选项。

思路2:保留Category模型,添加分类数据到数据库

如果需要保留独立的Category模型(方便后续新增分类),需要先把Personal和Professional添加到数据库:

方法A:通过Django Admin添加

  1. 在应用的admin.py中注册Category模型:
from django.contrib import admin
from .models import Category, Item

admin.site.register(Category)
admin.site.register(Item)
  1. 运行服务器,登录Admin后台(访问/admin),找到Category模块,手动添加Personal和Professional两个分类。

方法B:通过Shell脚本添加

运行以下命令进入Django Shell:

python manage.py shell

在Shell中执行代码添加分类(替换your_app_name为你的应用名称):

from your_app_name.models import Category
Category.objects.create(type='Personal')
Category.objects.create(type='Professional')

完成后退出Shell,表单的下拉框就会显示这两个分类选项。

内容的提问来源于stack exchange,提问作者ac0437

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:35:21