2013-05-14 67 views
1

引用在此Django docs,我已经设置了以下内容:动态选择字段在Django

Category_Choices = (
    ('Food', (
     ('burger', 'hamburger'), 
     ('pizza', 'pizza'), 
     ), 
    ('Drink', (
     ('soda', 'soda'), 
     ('water', 'water'), 
     ('milk', 'milk'), 
     ('beer', 'beer'), 
     ), 
    ('Dessert' , (
     ('ic', 'ice cream'), 
     ('pie', 'pie'), 
     ('cake', 'cake'), 
     ), 
) 

我明白引用初始元组:

choice = models.CharField(max_length=10, choices=Category_Choices) 

但是我怎么限制只餐饮?如果我有一个选择列表,其中用户只选择食物,饮料或甜点,我如何限制第二选择列表仅限于食物项目,或仅限饮料项目等? Django文档不包含该部分。在此先感谢

回答

1

检查链接的文档产生这种反应。

“但是,如果你发现自己的黑客选择是动态的,你可能会更好过使用适当的数据库表与一个ForeignKey的选择是意味着静态数据的变化不大,如果有的话。“

选择字段不是为了给动态行为,即只显示某些选择的子集。

我的建议是创建另一个模型对象来容纳食物列表。

+0

我并不认为这是非常黑客,但也许你是对的。任何想法如何根据第一选择限制第二选择列表?或者这只是要求太多?谢谢您的帮助。 – Brian

+1

基于第一选择限制选择列表 - Django不会出现这种行为。当我需要时,我写了自己的hacky jquery来完成它,但我也看到有人使用这个项目:https://github.com/digi604/django-smart-selects –