Django:如何使用存储的模型实例作为表单选择?

Chr*_*lor 6 python django django-forms

我有一个基本上只是一个字符串的模型(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)
Run Code Online (Sandbox Code Playgroud)

但我不确定何时choices会定义.我假设只在首次导入模块时(即启动Django时).显然这不是一个很好的方法.

这似乎是一个常见的要求,但我似乎找不到任何例子.我怀疑我可能会遗漏一些明显的东西.无论如何,提前感谢您的答案.

zal*_*lew 21

topics = forms.ModelMultipleChoiceField(queryset=BlogTopic.objects.all())
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,除了不确定为什么使用ModelMultipleChoiceField - 给定OP使用ChoiceField,相应的等价物只是ModelChoiceField. (6认同)