美文网首页
Lesson 5 定制后台和制作网站

Lesson 5 定制后台和制作网站

作者: 拜仁的月饼 | 来源:发表于2020-11-03 21:57 被阅读0次

    课程请点击这里

    这节课的主要内容是针对models.py进行修改。另,网上有篇文章讲的不错,建议看看。Django ORM模块精讲

    下面进入本节课内容总结。

    1. 注册应用的新方法

    这部分是针对的是admin.py。原版本的admin.py如下:

    from django.contrib import admin
    from .models import Article
    
    # Register your models here.
    admin.site.register(Article)
    

    在Django 2.0以后支持使用函数包装器来注册,于是我们可以修改代码如下:

    from django.contrib import admin
    from .models import Article
    
    # Register your models here.
    @admin.register(Article) # 与admin.site.register(Article)同义。
    

    2. 让admin界面按字段显示

    如图:


    效果图

    可以在admin.py处定义一个类class ArticleAdmin(admin.ModelAdmin)。然后定义其中的属性。代码如下:

    class ArticleAdmin(admin.ModelAdmin):
        list_display = ["id", "title", "content", "create_time", "last_updated_time", "author", "is_deleted", "read_num"]
        # list_display:按什么显示就写什么,必须是在models.py中出现的
        ordering = ["id"] # 按什么排序
    

    3. 那么models.py应做什么修改

    原版代码:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    from django.db import models
    
    # Create your models here.
    class Article(models.Model): # 从models中找字段类型
        title = models.CharField(max_length = 30)
        content = models.TextField()
    

    修改后的代码:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    from django.db import models
    #from django.utils.timezone import now
    from django.contrib.auth.models import User
    
    # Create your models here.
    class Article(models.Model): # 从models中找字段类型
        title = models.CharField(max_length = 30)
        content = models.TextField()
        create_time = models.DateTimeField(auto_now_add = True)
        last_updated_time = models.DateTimeField(auto_now = True)
        author = models.ForeignKey(User, on_delete = models.DO_NOTHING,default = 1)
        is_deleted = models.BooleanField(default = False)
        read_num = models.IntegerField(default = 0)
    
        def __str__(self):
            return "<Article : {}>".format(self.title)
    

    仔细阅读两版代码,可以发现相比于原版代码,改后的代码添加了很多字段,还添加了一个魔法方法__str__

    首先说这个魔法方法。在未对admin.py修改时,文章列表可以显示为<Article : 123>的样子。

    然后再看Article类中定义的字段。

    • create_time = models.DateTimeField(auto_now_add = True) : 采用了DateTimeField字段,参数中指定了auto_now_add = True,表明意思是自动添加当前时间
    • last_updated_time:参数中指定了auto_now = True,与auto_now_add不同的是auto_now会一直更新,auto_now_add以上次编辑时间为准
    • author:指定的是models.ForeignKey(User),表示创作者
    • is_deleted:指定BooleanField()
    • read_num:指定IntegerField()

    相关文章

      网友评论

          本文标题:Lesson 5 定制后台和制作网站

          本文链接:https://www.haomeiwen.com/subject/woiivktx.html