在 Django 表单中保存外键对象,可以使用 Django 提供的 ModelChoiceField
字段来处理外键关系。
以下是一个示例代码,展示了如何在 Django 表单中保存外键对象:
# models.py
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=100)
class Product(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
# forms.py
from django import forms
from .models import Category, Product
class ProductForm(forms.ModelForm):
category = forms.ModelChoiceField(queryset=Category.objects.all())
class Meta:
model = Product
fields = ['name', 'category']
# views.py
from django.shortcuts import render
from .forms import ProductForm
def create_product(request):
if request.method == 'POST':
form = ProductForm(request.POST)
if form.is_valid():
form.save()
# 保存成功后的逻辑
else:
form = ProductForm()
return render(request, 'create_product.html', {'form': form})
# create_product.html
在上述代码中,我们定义了两个模型 Category
和 Product
,它们之间建立了外键关系。在表单中,我们使用 ModelChoiceField
字段来显示和选择 Category
对象。
在视图函数中,当表单提交时,我们使用 form.save()
来保存表单数据,包括外键关系。
请注意,在表单中使用 ModelChoiceField
时,需要在模型类中定义 __str__
方法,以便在表单中正确显示外键对象的字符串表示。