django-如何将datetime参数传递给modelform

django-如何将datetime参数传递给modelform,django,django-queryset,modelform,Django,Django Queryset,Modelform,我想过滤Reservemodelform中的service\u date字段 运行此表单时,返回:预期的字符串或缓冲区 class Reserve(forms.ModelForm): food_name = forms.ModelChoiceField(queryset=Food.objects.all()) def __init__(self, year=None, month=None, day=None, serve_date=None, *args, **kwargs

我想过滤
Reserve
modelform中的
service\u date
字段

运行此表单时,返回:
预期的字符串或缓冲区

class Reserve(forms.ModelForm):

    food_name = forms.ModelChoiceField(queryset=Food.objects.all())

    def __init__(self, year=None, month=None, day=None, serve_date=None, *args, **kwargs):
        super(Reserve, self).__init__(*args, **kwargs)

        self.year = year
        self.month = month
        self.day = day
        self.serve_date = serve_date
        date_stamp =  time.strptime(year+month+day,"%Y%M%d")
        serve_date = datetime.date(*date_stamp[:3])
        self.fields['food_name'].queryset = Food.objects.filter(
            serve_date__year = year, serve_date__month = month, serve_date__day = day)


    class Meta:
        model = Reservation
        fields = ('food_count', 'food_name')
食物模式:

class Food(models.Model):

    class Meta:
        verbose_name = "Food"
        verbose_name_plural = "Foods"

    def __unicode__(self):
        return self.food_name

    food_name = models.CharField(verbose_name="Food Name", max_length=50)
    price = models.CharField(verbose_name="Food Price", max_length=50)
    serve_date = models.DateTimeField(verbose_name="Serve Date")
回溯

args    ()

day     None

kwargs  {u'auto_id': u'id_%s',
 u'empty_permitted': True,
 u'error_class': <class 'django.forms.utils.ErrorList'>,
 u'prefix': u'form-0',
 u'use_required_attribute': False}

month   None

self    <ReservationForm bound=False, valid=Unknown, fields=(food_name;food_count)>

serve_date  None

year    None
args()
第一天
kwargs{u'auto_id':u'id_uu%s',
u'empty_allowed':True,
u'error_class':,
u'prefix':u'form-0',
u'use_required_属性:False}
无月
自己
无日期
第一年

您可以使用
表格\u kwargs


django Doc:

您应该显示完整的回溯。但在
time.strtime
datetime.date
上乱搞又有什么意义呢?你不能在任何地方使用这些变量。@DanielRoseman,编辑。我复制了错误的代码哦,那真的没用。您仍然没有使用
date\u stamp
serve\u date
执行任何操作,并且您仍然没有显示完整的回溯,以便我们可以查看错误发生的位置。@DanielRoseman我在
serve\u date=datetime.date中使用了date\u stamp(*date\u stamp[:3])
而且回溯是可以理解的,我知道,但是你没有对新的
服务日期做任何事情。您只需忽略它,它在方法末尾超出范围;为什么要这样做?这仍然不是回溯。