条件/偶然模型字段选择

时间:2011-10-31 16:19:20

标签: django django-models

如果我的模型有两个模型选择字段,是否有办法使第二个字段的选择集取决于第一个字段中选择的内容。例如,如果给出以下代码,则用户为“公司”字段选择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)
....

2 个答案:

答案 0 :(得分:3)

没有。选择必须是所有可能的选择。但是,您可以在表单上使用JavaScript来限制基于第一个选择的选择,但不能限制模型本身。

答案 1 :(得分:2)

有很多方法可以解决这个问题,这取决于你是使用django管理员还是你自己的自定义代码,但开箱即用它不起作用 - 表格中的所有内容都可以默认选择。

您最终会在表单级别和模板级别执行此操作,而不是在模型中执行此操作。您可以创建django form wizard以在多个阶段中显示表单。或者,您可以使用javascript仅在选择CMP字段后显示APPLE / MS字段。在选择并验证CMP之后,您可以获得更好的动态并执行一些动态加载APPLE / MS字段的ajax。