Django學習路19_is_delete屬性,重寫類方法,顯性隱性屬性


如果在 創建數據表時,使用了 objects = models.Model() 使隱形屬性變為了 顯性屬性 則 必須要自己定義一個 繼承了 models.Model 類的類,實現 管理功能 如果一個屬性一直都需要使用 比如 is_delete 屬性,判斷 這條數據是否刪除 is_delete 為 True 也就是 1 時,則表示刪除了 刪除了就不應該在數據庫表中再次使用了

models.py 中新添加的數據表,及其繼承類 class AnimalManage(models.Manager): # 父類先聲明,繼承的是 models.Manager 類,需要重寫 filter 方法 '''使用繼承,重寫原來類的方法,進行改進函數時,考慮類的繼承''' def get_queryset(self): '''使 filter 自動具有保留 is_delete 為 0 的功能,is_delete 為 1 的自動過濾掉''' # return super(AnimalManage,self).get_queryset() # 對父類的方法進行修改,將 is_delete 為 0 的留下 return super(AnimalManage,self).get_queryset().filter(is_delete = False) def create(self,a_name = "Pandas"): # 默認創建一個熊貓 '''改寫創建對象語句,使用子類完成操作''' animal = self.model() # 創建一個模型 animal.a_name = a_name return animal class Animal(models.Model): # 創建一個數據表為 Animal a_name = models.CharField(max_length=16) # 動物名字 is_delete = models.BooleanField(default=False) # 設置是否刪除數據,默認不刪除,數據庫中表示為 0  objects = AnimalManage() # 設置管理者,objects 是什么名字 # 類名.定義的名字.all()

添加到數據庫表中的數據 其中 is_delete 為 1 的表示已經刪除的數據 is_delete 是需要的數據


在 urls.py 中添加參數 url(r'getanimals',views.getanimals) 在 views.py 中添加 views. 后面的函數名 def getanimals(request): animals = Animal.objects.all() # 這里使用的是子類的實例化對象 objects context = { 'animals':animals } ''' animal = Animal.objects.create('動物名稱') 使用 子類中定義的方法進行創建 ''' return render(request,'Animals.html',context=context)

在 templates 中創建 render 函數中的 'xxx.html' 文件 此處 我的是 Animals.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>動物</title> </head> <body> <h2>動物列表</h2> <ul> {% for animal in animals %} <li>{{ animal.a_name }}</li> {% endfor %} </ul> </body> </html>

 

 

 

 


is_delete 為 1 的過濾掉了, 為 0 的保存了下來

2020-05-13

 


免責聲明!

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



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