我需要有两个字段的django modelform,其中第二个字段选择列表取决于第一个字段中选择的内容。我的模型:
class Offer(BaseModel):
VEHICLE_TYPES = (
('personal','Personal car'),
('truck','Truck'),
)
vehicle_type = models.CharField(max_length=32, choices=VEHICLE_TYPES, default='personal', verbose_name='Vehicle type')
PERSONAL_MAKES = (
('',''),
)
TRUCK_MAKES = (
('',''),
)
make = models.CharField(max_length=32)#what more??
如果车辆类型设置为个人,如何将生成字段的选项设置为个人?我该怎么做?在模型级别上有可能吗?
可能不能,因为这取决于用户与表单的交互:在将表单发送到浏览器之前,服务器无法预先知道用户将选择哪个元素。您可能可以使用ajax实现这一点。我认为一个工作过程可以是:
make
字段hiddenAjaxMakeFieldView
),该视图将捕获一个ajax请求,接受一个vehicle_type
参数,并返回make field
的HTML,其中填充了相关数据。在URLConf中为此视图添加一个URL。vehicle_type
时,浏览器将向AjaxMakeFieldView
发送aan ajax请求,并用返回的HTML替换隐藏的make
字段如果不需要javascript,另一种方法是两步式:
vehicle_type
字段的第一个窗体make
字段,根据在第一个表单中选择的vehicle_type
填充初始数据。我从来没有这样做过,但是Django documentation on Form wizard似乎是一个很好的开始。
这就是为什么我在一个页面上有两个相互依赖的模型选择字段。在下面,
field2
取决于field1
:Javascript部分
请注意,在
$.each()
中,不应该使用$.parseJSON(resp)
(而不仅仅是json
),因为jQuery已经对其进行了解析(由于内容类型为“application/json”响应)-请参见I keep getting "Uncaught SyntaxError: Unexpected token o"。Django views.py部分
注意,django rest框架也可以做到这一点。 我正在从我的
MyModel2
中获取fields=('id', 'code', 'affection'))
-然后可以使用obj.fielsd.<myfieldname>
在JQuery中找到这些。相关问题 更多 >
编程相关推荐