Django在admin模塊中顯示auto_now_add=True或auto_now=True的時間類型列


轉載自: http://www.tuicool.com/articles/ZryE7f

 

在Django如果model中的列定義了auto_now_add或auto_now屬性,那么這種列不會在admin的頁面中顯示,比如:

class Blog(models.Model):
    ...
    create_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)

其中的create_time和update_time均不會顯示在admin頁面中。

 

查看Django的源代碼

...
    def __init__(self, verbose_name=None, name=None, auto_now=False,
                 auto_now_add=False, **kwargs):
        self.auto_now, self.auto_now_add = auto_now, auto_now_add
        if auto_now or auto_now_add:
            kwargs['editable'] = False
            kwargs['blank'] = True
        super(DateField, self).__init__(verbose_name, name, **kwargs)

從代碼可以看出,如果使用了auto_now_add或者auto_now屬性,那么這一列將會把editable屬性設置為False。

所有如果真的想要強制顯示這樣的列,那么可以在列的定義語句后增加設置editable屬性為True,比如:

class Blog(models.Model):
    ...
    create_time = models.DateTimeField(auto_now_add=True)
    create_time.editable = True
    update_time = models.DateTimeField(auto_now=True)
    update_time.editable = True

 


免責聲明!

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



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