📅  最后修改于: 2023-12-03 15:00:27.053000             🧑  作者: Mango
在 Django 中,我们可以使用外键来建立数据之间的关系,外键可以将一个表中的数据关联到另一个表中的数据。在本文中,我们将介绍如何使用 Django 将数据插入数据库外键,以及如何在视图中使用外键。
首先,我们需要定义两个模型,一个主模型和一个外键模型,例如:
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)
在上面的例子中,我们定义了两个模型,一个作者模型和一个书籍模型。在书籍模型中,我们使用了 ForeignKey
字段来定义了与作者模型的关联关系,on_delete=models.CASCADE
表示在删除关联的作者模型时,相应的书籍数据也会被删除。
接下来,我们可以创建一个表单来接收用户输入的数据,并保存到数据库中。例如:
from django import forms
from .models import Author, Book
class BookForm(forms.ModelForm):
title = forms.CharField(max_length=100)
author = forms.ModelChoiceField(queryset=Author.objects.all())
class Meta:
model = Book
fields = ['title', 'author']
在上面的表单中,我们使用了 ModelForm
类来自动生成表单,ModelChoiceField
会自动加载作者选项以供用户选择。
在视图中,我们需要获取用户提交的表单数据,并创建一个新的书籍数据。例如:
from django.shortcuts import render, redirect
from .forms import BookForm
def add_book(request):
if request.method == 'POST':
form = BookForm(request.POST)
if form.is_valid():
form.save()
return redirect('book_list')
else:
form = BookForm()
context = {'form': form}
return render(request, 'add_book.html', context)
在上面的视图中,我们首先检查请求方法是否为 POST,如果是,我们从请求中获取表单数据,然后检查表单数据是否有效,如果有效,我们创建一个新的书籍数据并将其保存到数据库中。如果请求方法不是 POST,我们将创建一个空表单并返回到模板中。最后,我们将表单作为上下文传递给模板,并使用 render
函数渲染模板。
最后,我们需要编写一个模板来显示表单并允许用户提交数据。例如:
{% extends 'base.html' %}
{% block content %}
<h1>Add Book</h1>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
{% endblock %}
在上面的模板中,我们首先继承了一个基础模板,然后显示了一个标题,并渲染了表单。我们在表单中包含了一个 CSRF 令牌,以防止跨站点请求伪造攻击。最后,我们添加了一个提交按钮,允许用户提交表单数据。
在本文中,我们介绍了如何使用 Django 将数据插入数据库外键。我们从定义模型开始,然后创建了一个表单来接收用户输入的数据,并在视图中将数据保存到数据库中。最后,我们编写了一个模板来显示表单并允许用户提交数据。这些步骤可以帮助你快速地使用 Django 将数据插入到关联的表中。