Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带有外键的Django ModelForm_Python_Django - Fatal编程技术网

Python 带有外键的Django ModelForm

Python 带有外键的Django ModelForm,python,django,Python,Django,我试图创建一个ModelForm,用外键更新表。我所做的似乎很有效,但我希望有人能告诉我是否有更好的方法来做这件事,或者我下面的方法是否有问题 在Author和Genres表中使用查询集是否正确?感觉上我应该在书模型上使用查询集,并将外键与这些表关联起来 models.py: 类作者(models.Model): name=models.CharField(最大长度=200) 课程类型(models.Model): name=models.CharField(最大长度=200) 教材(model

我试图创建一个
ModelForm
,用外键更新表。我所做的似乎很有效,但我希望有人能告诉我是否有更好的方法来做这件事,或者我下面的方法是否有问题

Author
Genres
表中使用查询集是否正确?感觉上我应该在
模型上使用查询集,并将外键与这些表关联起来

models.py

类作者(models.Model):
name=models.CharField(最大长度=200)
课程类型(models.Model):
name=models.CharField(最大长度=200)
教材(models.Model):
title=models.CharField(最大长度=200)
author=models.ForeignKey('author')
流派=模型。外键('流派')
forms.py

类图书格式(ModelForm):
title=forms.CharField(最大长度=200)
author=forms.modelcooicefield(queryset=author.objects.all())
genre=forms.modelcooicefield(queryset=genre.objects.all())
类元:
模型=书
字段=[“标题”、“作者”、“流派”]
views.py

def添加书(请求):
如果request.method==“POST”:
表单=图书表单(request.POST)
如果form.is_有效():
保存(commit=True)
返回HttpResponseRedirect(“/add/”)
其他:
form=BookForm()

我真的不知道你们在问什么,或者你们为什么想在书上设置查询集

实际上,您没有更改任何字段上的任何默认值,因此无需重新定义它们:您的表单可以简单地

class BookForm(ModelForm):
    class Meta:
        model = Book

它的工作原理也完全一样。

我不太清楚你们在这里问什么,或者你们为什么想要一本书的查询集

实际上,您没有更改任何字段上的任何默认值,因此无需重新定义它们:您的表单可以简单地

class BookForm(ModelForm):
    class Meta:
        model = Book

它的工作原理完全相同。

这段代码唯一的错误是覆盖了模型表单的默认行为。 将其更改为:

class BookForm(ModelForm):

    class Meta:
        model = Book
        fields = ['title', 'author', 'genre']
让django处理这些的定义。 如果需要添加标签或小部件,可以在Meta类中定义它们:

class BookForm(ModelForm):

     class Meta:
         model = Book
         fields = ['title', 'author', 'genre']
         labels = {'title': 'Book title', }

例如。

此代码唯一的错误是覆盖了模型表单的默认行为。 将其更改为:

class BookForm(ModelForm):

    class Meta:
        model = Book
        fields = ['title', 'author', 'genre']
让django处理这些的定义。 如果需要添加标签或小部件,可以在Meta类中定义它们:

class BookForm(ModelForm):

     class Meta:
         model = Book
         fields = ['title', 'author', 'genre']
         labels = {'title': 'Book title', }
例如。

谢谢!(填充文字)谢谢!(填充文本)