Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django表单选项在页面刷新时消失_Python_Django_Forms_Post - Fatal编程技术网

Python Django表单选项在页面刷新时消失

Python Django表单选项在页面刷新时消失,python,django,forms,post,Python,Django,Forms,Post,我有一个Django表单,它有一个选择字段,用于为ForeignKey关系选择用户。最初,当页面加载时,它会显示“选择”字段,其中包含所有用户作为选项。刷新页面(或由于验证错误而重新加载)时,“选择”字段没有选项。继续刷新有时会加载它们,但不一致 forms.py: user_choices = ((obj.id, obj.email) for obj in User.objects.all()) class EditContentForm(forms.ModelForm): clas

我有一个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表单做过很多次了,但从未见过这个问题。非常感谢您的任何想法。

出于某种原因,您正在使用生成器进行选择。第一次之后,它就会精疲力竭


至少,您应该将该定义移动到
\uuu init\uuu
方法中。

您会建议其他方法吗?不会。我的建议有什么问题吗?即使您将其设置为生成器以外的其他功能,您仍然会遇到一个问题,即在重新启动服务器之前,新添加的用户不会出现在选项中,这是不太可能的。按照我的建议,将它移到方法中。丹尼尔,这似乎有效,谢谢你的建议。我在问除了发电机之外,是否还有别的东西我应该用。