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添加
- 在应用的
admin.py中注册Category模型:
from django.contrib import admin from .models import Category, Item admin.site.register(Category) admin.site.register(Item)
- 运行服务器,登录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
相关产品推荐
相关产品推荐

