【问题标题】:Not able to show the selected form choice in template无法在模板中显示选定的表单选项
【发布时间】:2013-06-14 22:23:28
【问题描述】:

forms.py

PERSON_ACTIONS = (
    ('1', '01.Allowed to rest and returned to class'),
    ('2', '02.Contacted parents /guardians'),
    ('3', '02a.- Unable to Contact'),
    ('4', '02b.Unavailable - left message'),

class PersonActionsForm(forms.ModelForm):

    action = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), choices=PERSON_ACTIONS, required=False)

views.py

def person(request):
    action= Actions.objects.filter(reportperson=person_id)
    return render(request, 'index.html',
             {
              'action':action,
                 })

models.py

class Actions(models.Model):
    """Action list to a report"""
    reportperson = models.ForeignKey(ReportPerson)
    action =  models.IntegerField('Action type',choices=PERSON_ACTIONS)

模板

{{ action.get_action_display }}

来自 django doc 的选择字段,我这样做了,但它不起作用。在数据库中,它们的值保存为“3”、“4”。我希望它会显示像“02a”这样的值。- 无法到联系人","02b.Unavailable - left message" 而不是 "3","4" 等。它没有显示任何东西。

如何做到这一点。

谢谢

【问题讨论】:

  • 按照 Daniel 说的做了更改,还是不行,我可以从任何人那里得到指导
  • 您的代码没有意义。您正在定义PersonActionsForm,但您不在任何地方使用它。你在你的视图中使用了一个Actions 模型,你没有向我们展示。我们将如何帮助您?
  • @rantanplan,更新了 models.py 和 PersonActionsForm 用于保存选择
  • 1) action 是一个IntegerField,这意味着它可以保存一个整数值。然而,在您的表单中,您将小部件覆盖为多项选择,但它无法保存多个值。 2)filter 必须按照丹尼尔所说的那样去。 3)尝试在python解释中运行它(使用get而不是filter)并发布结果。
  • @rantanplan 在控制台中收到此错误 >>> Actions.objects.get(pk=person_id) Traceback(最近一次调用最后):文件“”,第 1 行,在 NameError: name 'person_id' is not defined "

标签: django django-models django-forms django-templates


【解决方案1】:

filter 总是返回一个 QuerySet,而不是一个模型实例。你应该改用get

【讨论】:

    猜你喜欢
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多