📜  django 将数据插入数据库外键 view.py - Python (1)

📅  最后修改于: 2023-12-03 15:00:27.053000             🧑  作者: Mango

使用 Django 将数据插入数据库外键

在 Django 中,我们可以使用外键来建立数据之间的关系,外键可以将一个表中的数据关联到另一个表中的数据。在本文中,我们将介绍如何使用 Django 将数据插入数据库外键,以及如何在视图中使用外键。

1. 定义模型

首先,我们需要定义两个模型,一个主模型和一个外键模型,例如:

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 表示在删除关联的作者模型时,相应的书籍数据也会被删除。

2. 创建表单

接下来,我们可以创建一个表单来接收用户输入的数据,并保存到数据库中。例如:

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 会自动加载作者选项以供用户选择。

3. 编写视图

在视图中,我们需要获取用户提交的表单数据,并创建一个新的书籍数据。例如:

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 函数渲染模板。

4. 模板

最后,我们需要编写一个模板来显示表单并允许用户提交数据。例如:

{% 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 将数据插入到关联的表中。