Python 在Django中使用表单

Python 在Django中使用表单,python,django,django-forms,Python,Django,Django Forms,我正在创建一个网站,有两种形式。我拥有的数据库有作者和标题。我想做的是,当我在我的选择字段中单击作者时,我希望筛选标题,以便用户只能选择这些标题。我该怎么做 class ArticleForm(forms.ModelForm): author = forms.ModelMultipleChoiceField(queryset=Article.objects.all()) title = forms.ModelMultipleChoiceField(queryset=Articl

我正在创建一个网站,有两种形式。我拥有的数据库有作者和标题。我想做的是,当我在我的选择字段中单击作者时,我希望筛选标题,以便用户只能选择这些标题。我该怎么做

class ArticleForm(forms.ModelForm):
    author = forms.ModelMultipleChoiceField(queryset=Article.objects.all())

    title = forms.ModelMultipleChoiceField(queryset=Article.objects.filter(author=author))

    class Meta:
        model = Article
        fields = ('author','title')
单击作者姓名时,标题仍然为空。我该怎么办

下面是我的模型

class Article (models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=200)

首先,你需要文章和作者之间的关系。如果您有这样的模型:

class Author(models.Model):
   name = models.CharField(max_length=200) 

class Article(models.Model):
    title = models.CharField(max_length=200)
    author = models.ForeignKey(Author)
文章
属于
作者
,而
作者
可以有许多
文章
s

基于
作者
模型的模型表单允许您添加(或修改)作者。基于
文章
的模型表单允许您添加(或修改)文章。这些都很有用,但在这种情况下就不行了。我们需要一个用于选择作者和文章的标准表单:

class ArticleForm(forms.Form):
    author = forms.ModelChoiceField(queryset=Author.objects.all())
    article = forms.ModelChoiceField(queryset=Article.objects.all())
此表单将为
作者
文章
字段提供一个选择小部件。它让你选择其中一个。它会将所有作者和所有文章呈现到模板中。如果您有一些条目,这是可以的,但是很多条目都会有问题

下一部分是筛选文章选项。这个问题的答案有点难。因为这取决于您的项目需求

  • 您可能需要编写一些JavaScript来过滤选择字段 基于作者
  • 您可能需要为以下字段添加验证程序: 相互依赖
  • 您可能不想在中加载所有文章 您可能希望使用Ajax技术来加载文章 属于作者的
  • 您可能希望使用FormWizard将表单拆分为多个页面/步骤

我想要的是字段在不提交表单的情况下动态更改。换句话说,当我单击表单中的作者姓名时,标题表单中的选项应该更改。标题表中的选项应为该特定作者的标题。这有意义吗?我添加了我的模型文件。以防对你有帮助