设定:
CreateRentView
上运行了基于类的通用视图Rent
。我实施了自定义ModelForm
RentForm
来实施其他验证(例如,确保start_time <= end_time
)。Rent
(通过CreateRentView
)时,第一个用户定义开始和结束时间。这会触发AJAX请求以获取此时间范围内的可用对象,并使用Javascript填充rental_objects
HTML小部件(请参见下面的屏幕截图)。问题:
rental_objects
的验证错误:Select a valid choice. 1 is not one of the available choices.
MB1
。这是因为我想将字段rental_objects
初始化为空。因此,类get_form()
的方法CreateRentView
将表单字段rental_objects
设置为空QuerySet
:
def get_form(self):
form = super(generic.CreateView, self).get_form()
# Rental objects are retrieved via AJAX after start and end time is defined.
form.fields["rental_objects"].queryset = RentalObject.objects.none()
显然,这会触发内部Django验证,确保将此字段提交为空。
如何避免此验证?
PS:当然,我无法覆盖get_form()
并使用Javascript清空rental_objects
的HTML小部件。但是,这只是一个混乱的解决方法
Django-AJAX-ManyToManyField http://i67.tinypic.com/14uv0gl.jpg
答案 0 :(得分:0)
我相信这是出租物品的选择。
如果您使用整数作为选择,则应使用IntegerField。对于CharField使用字符串