码迷,mamicode.com
首页 > 其他好文 > 详细

Django-----定制后台以及修改模型

时间:2018-01-28 18:15:51      阅读:395      评论:0      收藏:0      [点我收藏+]

标签:default   field   9.png   you   author   reader   nothing   port   对象   

我们打开后台会发现显示的字段仅仅包含article总的字段,需要看里面的内容的话我们需要点击进去看,有没有定制的方法把定义的字段显示出来呢?

技术分享图片

1.方法一:通过model里面修改:使用self方法返回对象类:

返回一个标题:

def __str__(self):
    return self.title

返回一个对象:

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

2.方法二:在admin里面修改,这种方法比较常用。

建立一个class类:

class ArtcirleAdmin(admin.ModelAdmin):
    list_display = ("id","title","content",)#注意:必须设置字段为list_dispaly
    ordering = ("id",)
admin.site.register(Artcirle,ArtcirleAdmin)

ordering是一个排序的规则:

3.使用装饰器注册:

前面的注册都是使用admin.site.register()的方式注册。

这里使用装饰器的方法注册:这种写法更加清晰明了。

@admin.register(Artcirle)
class ArtcirleAdmin(admin.ModelAdmin):
    list_display = ("id","title","content",)#注意:必须设置字段为list_dispaly
    ordering = ("id",)

 二、添加字段

1.添加字段需要跟新一下数据库: 使用python manage.py makemigrations,和 python manage.py migrate 命令。

法一:按提示输入默认值设置。

class Artcirle(models.Model):#创建数据模型
    title = models.CharField(max_length = 10)
    content = models.TextField()
    created_time = models.DateTimeField()

法二:设置默认值。需要导入:utils

from django.db import models
from django.utils import timezone
# Create your models here.
class Artcirle(models.Model):#创建数据模型
    title = models.CharField(max_length = 10)
    content = models.TextField()
    created_time = models.DateTimeField(default = timezone.now)
    # def __str__(self):
    #     return self.title

法三:设值为auto_now_add 自动添加当前时间:

from django.db import models
from django.utils import timezone
# Create your models here.
class Artcirle(models.Model):#创建数据模型
    title = models.CharField(max_length = 10)
    content = models.TextField()
    created_time = models.DateTimeField(auto_now_add = True)
    
    # def __str__(self):
    #     return self.title

2.添加最近一次修改时间 使用:auto_add

from django.db import models
from django.utils import timezone
# Create your models here.
class Artcirle(models.Model):#创建数据模型
    title = models.CharField(max_length = 10)
    content = models.TextField()
    created_time = models.DateTimeField(auto_now_add = True)
    created_updated_time = models.DateTimeField(auto_now = True)

3.添加一个删除的标记

on_detele = models.BooleanField(default = False)

在后台标记:默认不删除。

技术分享图片

让删除的字段不显示在页面上:在views里面设置:filter(条件)

def artcirle_list(request):
    artcirles = Artcirle.objects.filter(on_detele = False)
    contenx = {}
    contenx[artcirle_list] = artcirles
    return render_to_response(list.html,contenx)

4.添加作者,阅读次数:

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
# Create your models here.
class Artcirle(models.Model):#创建数据模型
    title = models.CharField(max_length = 10)
    content = models.TextField()
    created_time = models.DateTimeField(auto_now_add = True)#创建时间
    created_updated_time = models.DateTimeField(auto_now = True)#跟新时间
    on_detele = models.BooleanField(default = False)#删除标记
    author = models.ForeignKey(User, on_delete = models.DO_NOTHING,default=1)#需要设置参数作者
    reader_time = models.IntegerField(default= 0)#阅读次数
    # def __str__(self):
    #     return self.title

 

Django-----定制后台以及修改模型

标签:default   field   9.png   you   author   reader   nothing   port   对象   

原文地址:https://www.cnblogs.com/jeepzp/p/8370743.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!