1.Using the Admin site
admin模塊在django.contrib中,所以添加admin管理時需要在ulrs中去掉以下兩行注釋;
from django.contrib import admin
admin.autodiscover()
2.setting設置
1)在INSTALLED_APPS中添加django.contrib.admin
小技巧:INTALLED_APPS最好以alphabetical排列,這樣比較容易閱讀。
2)確保以下三個app被安裝
django.contrib.sessions
django.contrib.contenttypes
django.contrib.auth
3)MIDDLEWARE_CLASSES打開
django.middleware.common.CommonMiddleware
django.contrib.sessions.middleware.SessionMiddleware
django.contrib.auth.middleware.AuthenticationMiddleware
4)安裝admin數(shù)據(jù)庫
如果以上幾點是新添加的,那么需要添加amdin管理用數(shù)據(jù)庫。
python manage.py syncdb
5)createsuperuser
如果在安裝數(shù)據(jù)庫時沒有創(chuàng)建superuser,則可以用以下命令創(chuàng)建
python manage.py createsuperuser
3.Adding your models to the Admin site
在books app目錄下創(chuàng)建admin.py文件,注意這個文件名只能叫admin.py不能是別的。
因為在django家在urls.py時會執(zhí)行admin.autodiscover()函數(shù),該函數(shù)從INSTALLED_APPS
中查找app,并在對應的app下查找amdin.py文件名。執(zhí)行admin.py的內容。
e.g.
from django.contrib import admin
from website.books import models
admin.site.register(models.Publisher)
admin.site.register(models.Author)
admin.site.register(models.Book)
4.修改admin可編輯屬性
admin會根據(jù)在創(chuàng)建數(shù)據(jù)庫時的非空與否屬性來確定字段是否必填。
默認的字段都是必須填的,如果可以為空可以自己添加屬性。e.g.
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField(blank=True)
注意:對于時間和數(shù)字,允許為空的條件需要blank=True,null=True,否則會引發(fā)錯誤。
models.DateField(blank=True, null=True)
這里blank=True沒有改變數(shù)據(jù)庫屬性,但是null=True卻改變了數(shù)據(jù)庫的屬性,所以
在添加null=True后需要更改數(shù)據(jù)庫,這個在上一節(jié)已經(jīng)描述過了,需要用數(shù)據(jù)庫命令來修改。
5.Customizing field labels
默認情況下,數(shù)據(jù)庫的field名字在admin中顯示的是數(shù)據(jù)庫定義時的名字,例如上面例子中first_name
顯示的就是first_name,這個可以修改在數(shù)據(jù)庫中顯示的名字(label),例如:
class Author(models.Model):
first_name = models.CharField(max_length=30,verbose_name="姓名")
last_name = models.CharField(max_length=40)
email = models.EmailField(blank=True)
def __unicode__(self):
return self.last_name
6.Customizing ModelAdmin class
1)默認情況下amdin中顯示某個表中的內容是__unicode__函數(shù)中定義的內容。例如上面的例子
Author表中在admin中只會顯示last_name列內容。
類似下面的表示:
Author #表名
xiuqi #作者的last_name
yogngao
2)顯然這個樣子是很難看的,我們可以完全定制顯示形式包括5中提到的修改label名。
修改后的例子:
#admin.py
from django.contrib import admin
from mysite.books.models import Publisher, Author, Book
class AuthorAdmin(admin.ModelAdmin):
list_display = ('first_name', 'last_name', 'email')
admin.site.register(Publisher)
admin.site.register(Author, AuthorAdmin)
admin.site.register(Book)
#models.py
class Author(models.Model):
first_name = models.CharField(max_length=30,verbose_name="姓名")
last_name = models.CharField(max_length=40)
email = models.EmailField(blank=True)
這樣修改后的表示形式為:
姓名 last_name email
zhang san xxx@mail.com
sun yonggao xxx@mail.com
3)其他定制項目
search_fields = ('first_name', 'last_name')
list_filter = ('first_name',)
date_hierarchy = ('first_name')
ordering = ('-first_name',)
fields = ('last_name', 'first_name', 'email', )#定制列的先后順序
#利用fields屬性同樣可以起到控制可編輯域作用,即不想被編輯的域直接就
#可以不列出來。
7.控制用戶 組 權限
這個直接配置即可。
<本節(jié)完>
如對本文有疑問,請?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會為你解答??! 點擊進入論壇