如果我的模型有两个模型选择字段,是否有办法使第二个字段的选择集取决于第一个字段中选择的内容。例如,如果给出以下代码,则用户为“公司”字段选择APPLE - 代码是否可以配置为仅向用户提供APPLE DIV_CHOICES以进行“分区”字段选择?
CMP_CHOICES ('Apple', 'Apple Computers'),
('MS', 'Microsoft Inc.'),
APPLE DIV_CHOICES ( 'Desktop', 'Desktop'),
( 'iOS', 'iOS'),
( 'AS', 'AppStore'),
MS DIV_CHOICES ( 'Windows', 'Windows'),
( 'Longhorn', 'Longhorn'),
( 'Mobile', 'Mobile'),
class Contact(models.Model)
first_name = models.CharField(max_length=64, …)
last_name = models.CharField(max_length=64, …)
company = models.CharField(max_length=100, choices=CMP_CHOICES)
division = models.CharField(max_length=100, choices=DIV_CHOICES)
....
答案 0 :(得分:3)
没有。选择必须是所有可能的选择。但是,您可以在表单上使用JavaScript来限制基于第一个选择的选择,但不能限制模型本身。
答案 1 :(得分:2)
有很多方法可以解决这个问题,这取决于你是使用django管理员还是你自己的自定义代码,但开箱即用它不起作用 - 表格中的所有内容都可以默认选择。
您最终会在表单级别和模板级别执行此操作,而不是在模型中执行此操作。您可以创建django form wizard以在多个阶段中显示表单。或者,您可以使用javascript仅在选择CMP字段后显示APPLE / MS字段。在选择并验证CMP之后,您可以获得更好的动态并执行一些动态加载APPLE / MS字段的ajax。