【问题标题】:Django Caught Warning while rendering: Incorrect integer value: ... for column 'user_id' at row 1Django Caught Warning while rendering: Incorrect integer value: ... for column 'user_id' at row 1
【发布时间】:2011-06-10 23:39:08
【问题描述】:

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

在此部分中,他们可以从'愿望清单'(他们想猎杀的动物)和'行李清单'(他们已经猎杀的动物)中进行选择 p>

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

由于 TemplateSyntaxError,我的 forms.py 或其他问题出现问题。

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

我的 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']

非常感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

    您已经覆盖了表单的__init__ 方法的签名,首先添加了user 参数。您需要更改初始化表单的所有位置,以确保在 request.POST 之前传递 user

    或者,最好返回到已注释掉的代码,该代码从 kwargs 字典中获取 user,并删除方法签名中对 user 的引用。

    【讨论】:

    • 谢谢。只是为了确保我理解第二部分,“或者,最好返回到您拥有的注释掉的代码,该代码将用户从 kwargs 字典中取出,并删除方法签名中对用户的引用。”所以从 def __init__(self, user, *args, **kwargs): 中删除“用户”,使其看起来像 def __init__(self, *args, **kwargs) 并且应该可以工作?
    • 可以,只要您也取消注释 self.user 行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 2018-12-13
    • 1970-01-01
    • 2020-08-01
    • 2020-09-15
    • 1970-01-01
    相关资源
    最近更新 更多