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


我們打開后台會發現顯示的字段僅僅包含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是一個排序的規則:

類型的關聯的外鍵有可能沒有顯示:這需要我們在 model層里面修改一下:

class Blog_type(models.Model):
type_name = models.CharField(max_length = 15)
def __str__(self):
return self.type_name

def__str__(self):函數是為了顯示后台管理的內容。

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM