首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带外键的Django ModelForm

带外键的Django ModelForm
EN

Stack Overflow用户
提问于 2014-01-16 14:38:54
回答 2查看 5.3K关注 0票数 1

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

AuthorGenres表上使用查询集正确吗?我觉得我应该在Book模型上使用一个查询集,并将外键与这些表关联起来。

models.py

代码语言:javascript
复制
class Author(models.Model):
    name = models.CharField(max_length=200)
    
class Genre(models.Model):
    name = models.CharField(max_length=200)
    
class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.ForeignKey('Author')
    genre = models.ForeignKey('Genre')

forms.py

代码语言:javascript
复制
class BookForm(ModelForm):
    title = forms.CharField(max_length=200)
    author = forms.ModelChoiceField(queryset=Author.objects.all())
    genre = forms.ModelChoiceField(queryset=Genre.objects.all())

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

views.py

代码语言:javascript
复制
def add_book(request):
    if request.method == 'POST':
        form = BookForm(request.POST)
        if form.is_valid():
            form.save(commit=True)
            return HttpResponseRedirect('/add/')
    else:
        form = BookForm()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-16 14:50:04

这段代码唯一错误的地方是,您正在重写模型表单的默认行为。将其更改为:

代码语言:javascript
复制
class BookForm(ModelForm):

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

让django来处理它们的定义。如果需要添加标签或小部件,可以在Meta类中定义它们:

代码语言:javascript
复制
class BookForm(ModelForm):

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

例如。

票数 4
EN

Stack Overflow用户

发布于 2014-01-16 14:48:35

我不太清楚你在这里问的是什么,或者你为什么要在书上设置一个查询集。

实际上,您还没有更改任何字段的默认值,因此没有必要重新定义它们:您的表单可能很简单

代码语言:javascript
复制
class BookForm(ModelForm):
    class Meta:
        model = Book

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21164798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档