2013-05-14 89 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 –