2009-11-18 46 views
1

我剛開始學習Django,我想在ModelChoiceField中使用不同的查詢集。
如何在ModelChoiceField中使用多個查詢集?

我有3種型號那樣:

class Politic(models.Model): 
    name = models.CharField(max_length=100) 

class Economic(models.Model): 
    name = models.CharField(max_length=100) 

class Category(models.Model): 
    politic = models.ForeignKey(Politic, blank = True, null = True) 
    economic = models.ForeignKey(Economic, blank = True, null = True) 

而且像這樣的形式:

class MyForm(forms.Form): 
    choice = forms.ChoiceField(choices = (("0", u"---------"), ("1", u"Politic"), 
              ("2", u"Economic")), 
           required=False) 

    category = forms.ModelChoiceField(queryset=Economic.objects.all(), 
             required=False) 

在我的模板,我使用Ajax來填充我的類別字段與所有Politic列表或Economic根據我的選擇字段值。
但是,如果我選擇"Politic",我在驗證我的表單時遇到問題,因爲我的類別字段的查詢集是Economic.objects.all(),而不是Politic.objects.all()
如何更改我的動態查詢集?有任何想法嗎?

回答

2

你可以有2個不同的選擇一個爲政治和一個爲經濟和根據選擇領域顯示/隱藏它們。

或許Abstract Model Inheritance將解決你的問題

0

感謝您的回答,我嘗試使用您的兩個解決方案(抽象模型和通用關係),但它不能解決我的問題。
所以我創建了兩個不同的ModelChoiceField(一個用於政治和一個用於經濟),我在我的模板中使用了Jquery的隱藏/顯示效果(就像你說的Kugel)。
但是,如果您對我的問題有任何其他想法,我很感興趣。

相關問題