Django软删除功能完整指南:构建图书馆项目

发布于:2025-04-10 ⋅ 阅读:(89) ⋅ 点赞:(0)

Django软删除功能完整指南:构建图书馆项目

在这里插入图片描述

推荐超级课程:

在本教程中,我将使用 django-safedelete 包创建一个具有软删除功能的简单 Django 图书馆项目。该项目将包括多个模型、Django REST 框架 (DRF) API 和基本的 CRUD 操作。

Django-safedelete 功能,允许您将对象标记为已删除,而实际上并未从数据库中移除它们

第 1 步:安装所需包

pip install django djangorestframework django-safedelete

安装 Django、Django REST 框架和 django-safedelete 以添加软删除功能。

第 2 步:设置您的 Django 项目

django-admin startproject library_project
cd library_project

此命令初始化一个名为 library_project 的新 Django 项目。

第 3 步:创建一个 Django 应用程序

python manage.py startapp library

生成一个新的 Django 应用程序 library 来组织您的项目组件。

第 4 步:更新 library_project/settings.py 中的 INSTALLED_APPS

INSTALLED_APPS = [
    # ...
    'rest_framework',
    'safedelete',
    'library',
]

'rest_framework''safedelete' 和您的 'library' 应用程序添加到 INSTALLED_APPS 列表中。

第 5 步:在 library/models.py 中定义模型

创建两个具有软删除功能的模型 AuthorBook

# library/models.py
from django.db import models
from safedelete.models import SafeDeleteModel, SOFT_DELETE_CASCADE
class Author(SafeDeleteModel):
    _safedelete_policy = SOFT_DELETE_CASCADE
    name = models.CharField(max_length=100)
    def __str__(self):
        return self.name
class Book(SafeDeleteModel):
    _safedelete_policy = SOFT_DELETE_CASCADE
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    def __str__(self):
        return self.title

实现 AuthorBook 模型,两者都继承自 SafeDeleteModel 并具有软删除策略。

第 6 步:在 library/admin.py 中注册模型

# library/admin.py
from django.contrib import admin
from .models import Author, Book
admin.site.register(Author)
admin.site.register(Book)

在 Django 管理界面中注册 AuthorBook 模型。

第 7 步:进行迁移并应用更改

python manage.py makemigrations
python manage.py migrate

运行迁移以将更改应用到数据库模式。

第 8 步:创建超级用户

python manage.py createsuperuser

生成一个超级用户以访问 Django 管理界面。

第 9 步:在 library/serializers.py 中创建序列化器

# library/serializers.py
from rest_framework