场景:我正在构建一个订单。与地球上的所有其他订单一样,它具有单独的发票送货地址。我刚刚添加了一个“使用帐单地址”复选框,以让用户节省时间。
问题是,运输领域仍然存在。如果用户不输入任何送货地址数据(例如,如果他们想使用账单地址),他们将无法通过验证。
我想我想要覆盖这些重复字段的 ModelForm 验证。在那里,如果选中该框(不确定如何从验证器中获取该数据),我将返回计费版本。如果未选中,我将其传递回原始验证。
听起来像一个计划,不是吗?好吧,我在第一关就摔倒了。我clean_functions
的不工作。看起来他们甚至没有被召唤。
这是一些代码:
# shipping_street is a field in my Order Model
class OrderForm(ModelForm):
class Meta:
model = Order
def clean_shipping_street(self):
print "JUST GET ME SOME OUTPUT!!!"
raise forms.ValidationError('RAWRAWR')
这是我的测试方式:
def checkout(request):
of = OrderForm()
if request.method == "POST":
of = OrderForm(request.POST)
print 'Form valid:', of.is_valid()
# ...
# return my HttpResponse with 'of' in the context.