1

我刚刚开始学习 Django,我想在 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()

4

3 回答 3

2

您可以有 2 种不同的选择,一种用于政治,一种用于经济,并根据选择字段显示/隐藏它们。

或者抽象模型继承可以解决你的问题

于 2009-11-18T18:57:25.043 回答
0

一种可能性是在您的模型中使用通用关系。Catagory

于 2009-11-18T19:02:33.903 回答
0

感谢您的回答,我尝试使用您的两种解决方案(抽象模型和通用关系),但它不能解决我的问题。
因此,我创建了两个不同的 ModelChoiceField(一个用于政治,一个用于经济),并在我的模板中使用了 Jquery 的隐藏/显示效果(就像你说的 Kugel 一样)。
但是,如果您对我的问题有任何其他想法,我很感兴趣。

于 2009-11-19T14:27:12.083 回答