2016-11-13 100 views
-1

我想过滤Reserve modelform中的serve_date字段。django - 如何将datetime参数传递给modelform

运行该表单时,返回:expected string or buffer

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 
+0

你应该显示完整的回溯。但是用'time.strptime'和'datetime.date'分析这个问题有什么意义呢?你不要在任何地方使用*这些变量。 –

+0

@DanielRoseman,编辑。我已经复制了错误的代码 – shahin

+0

嗯,这并没有真正的帮助。您仍然没有使用'date_stamp'或'serve_date'做任何事情,并且您还没有显示完整的回溯,因此我们可以看到发生错误的位置。 –

回答