【问题标题】:Django form choices disappear on page refreshDjango 表单选项在页面刷新时消失
【发布时间】:2015-03-22 13:21:13
【问题描述】:

我有一个 Django 表单,它有一个选择字段来为 ForeignKey 关系选择一个用户。最初,当页面加载时,它会显示带有所有用户作为选项的选择字段。刷新页面(或由于验证错误而重新加载)时,选择字段没有选项。继续刷新有时会加载它们,但并非始终如一。

forms.py:

user_choices = ((obj.id, obj.email) for obj in User.objects.all())

class EditContentForm(forms.ModelForm):
    class Meta:
        model = Content
        fields = ['title', 'user']

    def __init__(self, *args, **kwargs):
        super(EditContentForm, self).__init__(*args, **kwargs)
        self.fields['title'].widget = TextInput(attrs = {'class' : 'form-control'})
        self.fields['user'].widget = Select(attrs = {'class' : 'form-control'}, choices = user_choices)

我已经多次使用 Django 表单来执行此操作,但从未见过此问题。任何想法都值得赞赏,谢谢。

【问题讨论】:

    标签: python django forms post


    【解决方案1】:

    出于某种原因,您正在使用生成器进行选择。第一次用完就累死了。

    至少,您应该将该定义移到 __init__ 方法中。

    【讨论】:

    • 您有什么替代方法可以推荐吗?
    • 没有。我的建议有什么问题?即使你把它做成了生成器以外的东西,你仍然会遇到新添加的用户不会出现在选择中的问题,直到你重新启动你的服务器,这不太可能是可取的。按照我的建议,将它移到方法中。
    • 丹尼尔似乎奏效了,感谢您的建议。我在问是否还有其他东西我应该使用的发电机。
    猜你喜欢
    • 2013-07-16
    • 2014-11-10
    • 2012-09-21
    • 2017-11-22
    • 2019-03-11
    • 2020-08-28
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多