dea*_*ase 13 python django django-models django-forms
我需要带有2个字段的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??
Run Code Online (Sandbox Code Playgroud)
如果vehicle_type设置为personal,我如何将make字段的选项设置为PERSONAL_MAKES?我怎样才能做到这一点?是否可以在模型级别?
您可能不能,因为它取决于用户与表单的交互:您的服务器无法事先知道用户在将表单发送到浏览器之前将选择哪个元素.您可以使用ajax实现此目的.我认为一个工作过程可能是:
make
字段AjaxMakeFieldView
),它将捕获带有vehicle_type
参数的ajax请求并返回HTML make field
,并填充相关数据.在URLConf中为此视图添加URL.vehicle_type
,浏览器会发送一个ajax请求AjaxMakeFieldView
并make
用返回的HTML 替换隐藏字段如果你不想要javascript,另一种方式是两步形式:
vehicle_type
字段的第一个表单make
字段的第二个表单,根据vehicle_type
第一个表单中的选择填充初始数据.我从来没有这样做过,但是关于Form向导的Django文档似乎是一个很好的起点.
归档时间: |
|
查看次数: |
6666 次 |
最近记录: |