Django ModelForm是Django框架中的一个表单类,用于快速生成表单并与数据库模型进行交互。当模型中存在外键字段时,默认情况下,ModelForm会以对象的id值来显示外键字段。如果希望显示外键的模型字段而不是对象id,可以通过以下步骤实现:
下面是一个示例:
# models.py
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
# forms.py
from django import forms
from .models import Book
class BookForm(forms.ModelForm):
class Meta:
model = Book
fields = ['title', 'author'] # 包含外键字段author
# views.py
from django.shortcuts import render
from .forms import BookForm
def create_book(request):
if request.method == 'POST':
form = BookForm(request.POST)
if form.is_valid():
form.save()
return redirect('book_list')
else:
form = BookForm()
return render(request, 'create_book.html', {'form': form})
# create_book.html
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">保存</button>
</form>
在上述示例中,Book模型有一个外键字段author,BookForm中通过指定fields属性包含了外键字段author。在模板中使用{{ form.as_p }}
来显示表单字段,这样就会显示外键的模型字段而不是对象id。
关于Django ModelForm的更多信息,可以参考腾讯云的相关产品文档: https://cloud.tencent.com/document/product/1081/50042
领取专属 10元无门槛券
手把手带您无忧上云