📜  在 Django 管理界面中渲染模型(1)

📅  最后修改于: 2023-12-03 14:50:54.462000             🧑  作者: Mango

在 Django 管理界面中渲染模型

Django 管理界面为开发者提供了一个方便快捷的方式来管理应用程序中的数据。管理界面中可以使用 Django 模型来操作数据,同时,在管理界面中可以使用各种控件来渲染对应的字段类型,并且可以对字段进行验证和处理。

创建一个 Django 模型

在 Django 中创建一个模型非常轻松。我们只需要定义一个 Python 类,然后继承 django.db.models.Model 即可。接下来,我们可以使用类属性来定义我们的字段,例如:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=50)
    author = models.CharField(max_length=50)
    description = models.TextField()
    published_date = models.DateField()

在上述代码中,我们定义了一个 Book 模型,其中包含四个字段:titleauthordescriptionpublished_date。其中,titleauthordescription 是文本字段,published_date 是日期字段。

注册模型到管理员界面

接下来,我们需要将我们的模型注册到 Django 管理界面中,以便我们可以使用该模型来管理数据。要注册模型,我们需要在 admin.py 文件中首先导入我们的模型,然后调用 admin.site.register() 函数即可。例如:

from django.contrib import admin
from .models import Book

admin.site.register(Book)

现在,我们可以进入管理员界面,就能看到 Book 模型已经成功注册到管理界面,可以通过该界面来添加、编辑和删除书籍记录。

在管理界面中渲染模型字段

默认情况下,Django 管理界面使用通用的 HTML 表单控件来呈现模型字段。例如,上面定义的 Book 模型中的 title 字段将呈现为一个文本框,published_date 字段将呈现为一个日期选择器。

现在,假设我们希望更改呈现 published_date 字段的方式,以便它只显示年份和月份,而不是完整日期。为此,我们可以创建一个自定义的 ModelForm 类,并对 published_date 字段定义一个新的部件,例如:

from django import forms
from django.contrib import admin
from django.forms import ModelForm
from .models import Book

class BookForm(ModelForm):
    published_date = forms.DateField(widget=forms.SelectDateWidget(years=range(2020, 2031), months={1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June', 7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'}))

    class Meta:
        model = Book
        fields = '__all__'

class BookAdmin(admin.ModelAdmin):
    form = BookForm

admin.site.register(Book, BookAdmin)

在上述代码中,我们定义了一个自定义的 BookForm 类,该类以 Book 模型为基础,并定义了一个新的 published_date 字段。该字段使用 SelectDateWidget 部件,可以只选择年份和月份。接下来,我们定义一个 BookAdmin 类,该类将该自定义表单应用于 Book 模型,并在其他类似的情况下使用。

总结

通过本文,我们已经了解了在 Django 管理界面中渲染模型的基础知识。我们已经学习了如何创建一个 Django 模型,然后将其注册到管理员界面中。我们还讨论了如何自定义模型字段的呈现方式,并创建了一个自定义的表单来更改 published_date 字段的呈现方式。通过这些工具,程序员可以更快、更简单地操作数据,在 Django 框架中更高效地工作。