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])
而且回溯是可以理解的,我知道,但是你没有对新的服务日期做任何事情。您只需忽略它,它在方法末尾超出范围;为什么要这样做?这仍然不是回溯。