Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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表单初始dict始终为空_Python_Django - Fatal编程技术网

Python Django表单初始dict始终为空

Python Django表单初始dict始终为空,python,django,Python,Django,views.py forms.py 代码乱七八糟,现在只是随便玩玩。我需要以一种方式来做动态初始数据,我可以在get_initial中做,但不管我做什么,我的初始dict总是空的。我是否遗漏了一些非常愚蠢的东西?您是否定义了get\u initial方法?它看起来像什么?@DanielRoseman我还没有设定。它只是在默认情况下保留在CBV中,呃,那么您希望它如何提供动态数据呢?@DanielRoseman还没有,我还没有做到这一点,因为目前初始值总是空的。当我可以让它显示我正在定义的1时,我

views.py

forms.py


代码乱七八糟,现在只是随便玩玩。我需要以一种方式来做动态初始数据,我可以在get_initial中做,但不管我做什么,我的初始dict总是空的。我是否遗漏了一些非常愚蠢的东西?

您是否定义了get\u initial方法?它看起来像什么?@DanielRoseman我还没有设定。它只是在默认情况下保留在CBV中,呃,那么您希望它如何提供动态数据呢?@DanielRoseman还没有,我还没有做到这一点,因为目前初始值总是空的。当我可以让它显示我正在定义的1时,我将转到动态数据。我不知道为什么您希望1出现在从get_initial返回的字典中。正如您所说,get_initial用于动态表单初始数据:这与字段的初始常量是完全不同的。
class PlayerListView(PlayerViewMixin, FormMixin, ListView):
    form_class = PlayerFilterForm(initial={'min_rating': 1})
    paginate_by = 50
    template_name = 'players/player_list.html'

    def get_context_data(self, **kwargs):
        context = super(PlayerListView, self).get_context_data()
        context['form'] = self.form_class
        # context['form'].fields['maxrating'].initial = self.request.GET.get('maxrating')
        print(self.get_initial())
        return context

    def get_queryset(self):
        qs = super(PlayerListView, self).get_queryset()
        minrating = self.request.GET.get('minrating')
        maxrating = self.request.GET.get('maxrating')

        if self.request.GET.get('minrating'):
            qs = qs.filter(overall_rating__gte=minrating)

        if self.request.GET.get('maxrating'):
            qs = qs.filter(overall_rating__lte=maxrating)

        return qs
class PlayerFilterForm(forms.Form):
    min_rating = forms.ChoiceField(
        initial=1,
        choices=[
            (x, x) for x in range(1, 100)
        ]
    )

...