呈现时Django捕获警告:不正确的整数值:...第1行的列'user_id'

时间:2011-01-18 09:33:03

标签: django django-forms django-views django-widget

我正在为我的网站建立一个部分,允许猎人撰写狩猎报告。

在本节中,他们可以选择'愿望清单'(他们想要捕捉的动物)和'行李清单'(他们猎杀的动物)

我已经构建了表单,需要使用一些过滤器来提取仅用户相关数据

由于TemplateSyntaxError,我遇到了form.py或其他问题。

我想要的基础是“袋子列表”来过滤我的奖杯,并且用户不必选择自己但已经通过,即用户没有选择菜单

my forms.py看起来像这样

class HuntingReportForm(ModelForm):
    date_travel_started = forms.DateField(widget=extras.SelectDateWidget(years=range(1970,2012)))
    date_travel_ended = forms.DateField(widget=extras.SelectDateWidget(years=range(1970,2012)))
    wish_list = forms.ModelMultipleChoiceField(queryset=Specie.objects.all(), widget=FilteredSelectMultiple("verbose name", is_stacked=False), required=False)
    bag_list = forms.ModelMultipleChoiceField(queryset=Trophies.objects.all(), widget=FilteredSelectMultiple("verbose name", is_stacked=False), required=False)

    class Meta:
        model = HuntingReport
        #exclude = ['user',]

    def __init__(self, user, *args, **kwargs):
        #self.user = kwargs.pop('user', None)
        self.validate = kwargs.pop('validate', False)
        super(HuntingReportForm, self).__init__(*args, **kwargs)

        self.fields['bag_list'] = forms.ModelMultipleChoiceField(queryset=Trophies.objects.filter(user = user), widget=FilteredSelectMultiple("verbose name", is_stacked=False), required=False)
        users = User.objects.filter(userprofile__outfitter=True)
        self.fields['outfitter'].choices = [('', '')] + [(user.pk, user.get_full_name()) for user in users]
        self.fields.keyOrder = ['title', 'date_travel_started', 'date_travel_ended', 'outfitter', 'wish_list', 'bag_list','report', 'user']

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您已通过首先添加__init__ arg来覆盖表单user方法的签名。您需要在初始化表单的任何位置进行更改,以确保在user之前传递request.POST

或者,最好还是返回您从kwargs dict中获取user的已注释掉的代码,并删除方法签名中对user的引用。