Django:如何将存储的模型实例用作表单选项?

10 投票
1 回答
7156 浏览
提问于 2025-04-15 11:07

我有一个模型,实际上就是一个字符串(django.db.models.CharField)。这个模型只会存储几个实例。我该如何在表单中使用这些值作为选项呢?

举个例子,这个模型可以叫做 BlogTopic。我想让用户能够选择一个或多个主题来订阅。

我开始写了一些代码:

from mysite.blog.models import BlogTopic

choices = [(topic.id, topic.name) for topic in BlogTopic.objects.all()]

class SubscribeForm(forms.Form):
    topics = forms.ChoiceField(choices=choices)

但我不太确定 choices 应该在什么时候定义。我猜应该是在模块第一次被导入的时候(也就是启动Django的时候)。显然,这不是一个很好的方法。

这看起来应该是一个常见的需求,但我似乎找不到任何例子。我怀疑我可能漏掉了一些明显的东西。无论如何,提前感谢你的回答。

1 个回答

27
topics = forms.ModelMultipleChoiceField(queryset=BlogTopic.objects.all())

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更容易理解。

撰写回答