Django - 定制后台和修改模型

定制admin后台

Django管理后面数据库字段的显示

  • 在模型文件里面添加一个__str__方法
    models.py
from django.db import models


# Create your models here.
class Article(models.Model):
    # 创建一个标题
    # CharField代表它是一个文本型字符型的字段
    # 字段对应数据库
    # maxlength限制字段的最大长度
    title = models.CharField(max_length=30)
    # 创建一个内容
    # Text表示这个是一个文本字段
    content = models.TextField()

    def __str__(self):
        return "<article: %s>" % self.title

以列表形式在Django管理页面显示模型数据

admin.py

from django.contrib import admin
# 导入模型
from .models import Article

class ArticleAdmin(admin.ModelAdmin):
    list_display= ("id", "title", "content")
    # 按照字段正序排序
    ordering = ("id",)
    # 按照字段倒序排序
    # ordering = ("-id",)

# Register your models here.
admin.site.register(Article, ArticleAdmin)

使用装饰器
admin.py

from django.contrib import admin
# 导入模型
from .models import Article

@ admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    list_display= ("id", "title", "content")
    # 按照字段正序排序
    ordering = ("id",)
    # 按照字段倒序排序
    # ordering = ("-id",)

# Register your models here.
# admin.site.register(Article, ArticleAdmin)

修改模型

  • 备份数据库
    在这里插入图片描述
  • 修改数据库模型文件, 添加字段
    models.py
from django.db import models


# Create your models here.
class Article(models.Model):
    # 创建一个标题
    # CharField代表它是一个文本型字符型的字段
    # 字段对应数据库
    # maxlength限制字段的最大长度
    title = models.CharField(max_length=30)
    # 创建一个内容
    # Text表示这个是一个文本字段
    content = models.TextField()
    # 创建时间 auto_now_add=True表示创建的时候自动添加当前时间
    created_time = models.DateTimeField(auto_now_add=True)
    # 最后一次修改时间
    last_updated_time = models.DateTimeField(auto_now=True)
    

    def __str__(self):
        return "<article: %s>" % self.title

admin.py

from django.contrib import admin
# 导入模型
from .models import Article

@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    list_display= ("id", "title", "content", "created_time", "last_updated_time")
    # 按照字段正序排序
    ordering = ("id",)
  • 修改模型更新数据库
python manage.py makemigrations
python manage.py migrate

直接更新会报错, 因为没有给字段默认值

  • 处理方法
    • 直接输入字段默认值 : timezone.now

默认的时间有时间差, 需要修改全局设置中的TIME_ZONE字段参数为Asia/Shanghai设置时区为上海即可.

外键

可以使用django的用户模型. 导入django.contrib.auth.models 里面的 User

from django.db import models
from django.contrib.auth.models import User


# Create your models here.
class Article(models.Model):
    ....
    # 作者 on_delete=models.DO_NOTHING表示删除的时候不做任何操作
    author = models.ForeignKey(User, on_delete=models.DO_NOTHING, default=1)
    

    def __str__(self):
        return "<article: %s>" % self.title

逻辑删除

删除数据的操作是有风险的, 添加一个是否删除的字段, 用来标记删除操作

  • 添加一个is_delete字段
from django.db import models
from django.contrib.auth.models import User


# Create your models here.
class Article(models.Model):
    .......
    # 是否删除
    is_deleted = models.BooleanField(default=False)

    def __str__(self):
        return "<article: %s>" % self.title
  • 使用过滤器筛选没有删除的字段
    views.py
from django.shortcuts import render, get_object_or_404
# 应用模型
from .models import Article

..........
# 文章列表
def article_list(request):
	# 筛选没有删除的字段
    article = Article.objects.filter(is_deleted=False)
    context = {}
    context['articles'] = article
    return render(request, "article_list.html", context)

数值类型

  • 添加阅读数字段
from django.db import models
from django.contrib.auth.models import User


# Create your models here.
class Article(models.Model):
    ....
    readed_num = models.IntegerField(default=0)

    def __str__(self):
        return "<article: %s>" % self.title
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为AI语言模型,我可以为您提供一些基础的指导和建议,但是具体的代码实现还需要您自己根据需求进行编写,以下是一些基础的步骤和建议: 1. 安装 Django 并创建一个新的 Django 项目 Django 是一个基于 Python 的 Web 框架,可以通过 pip 安装。创建新的 Django 项目可以使用以下命令: ``` django-admin startproject project_name ``` 2. 创建一个新的 Django 应用 Django 应用是一个可以单独运行的组件,可以包含模型、视图、模板等。可以使用以下命令创建新的 Django 应用: ``` python manage.py startapp app_name ``` 3. 创建模型 模型Django 中最重要的组件之一,它描述了数据的结构和关系。可以在 app 中创建 models.py 文件,并定义模型。例如,如果要创建一个名为 Post 的模型,可以这样定义: ``` from django.db import models class Post(models.Model): title = models.CharField(max_length=255) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) ``` 4. 创建管理员账户 Django 提供了一个很便捷的方式来创建管理员账户,用于管理后台。可以使用以下命令创建管理员账户: ``` python manage.py createsuperuser ``` 5. 创建后台管理界面 Django 提供了一个强大的后台管理界面,可以用于管理模型数据。可以在 app 中创建 admin.py 文件,并注册模型。例如,如果要在后台管理界面中管理 Post 模型,可以这样注册: ``` from django.contrib import admin from .models import Post admin.site.register(Post) ``` 6. 运行服务器并访问后台管理界面 可以使用以下命令启动 Django 服务器: ``` python manage.py runserver ``` 然后在浏览器中访问 http://localhost:8000/admin/,使用刚才创建的管理员账户登录,就可以进入后台管理界面。在这里可以管理模型数据、添加新数据、修改数据等。 以上是基础的步骤和建议,具体实现还需要根据需求进行扩展和定制。希望可以对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值