admin界面位于[site]/admin这个URL。这通常在mysite/urls.py中已经设置好
url(r’^admin/’, admin.site.urls),
python manage.py migrate
创建一个超级用户
python manage.py createsuperuser
Django将关系型的表(table)转换成为一个类(class)。而每个记录(record)是该类下的一个对象(object)。
在models.py中,创建一个只有一列的表
from django.db import models
# Create your models here.
class Character(models.Model):
name = models.CharField(max_length=200)
def __unicode__(self):
return self.name
Django同步数据库
python manage.py syncdb
python manage.py makemigrations
查看SQL
python manage.py sqlmigrate west 0001
python manage.py migrate west
http://127.0.0.1:8000/admin
登录后,可以看到管理界面:
修改 west/admin.py
from west.models import Character
# Register your models here.
admin.site.register(Character)
追加数据
复杂的数据模型
west/models.py中增加一个更复杂的数据模型:
class Contact(models.Model):
name = models.CharField(max_length=20)
age = models.IntegerField(default=0)
email = models.EmailField()
def __str__(self):
return self.name
class Tag(models.Model):
contact = models.ForeignKey(Contact)
name = models.CharField(max_length=50)
def __str__(self):
return self.name
同步数据库:
python manage.py makemigrations west
python manage.py migrate west
在west/admin.py注册多个模型
admin.site.register([Character, Contact, Tag])
模型将在管理页面显示。比如Contact的添加条目的页面如下:
自定义管理页面
class ContactAdmin(admin.ModelAdmin):
fields = (‘name’, ’email’)
admin.site.register(Contact, ContactAdmin)
admin.site.register([Character, Tag])
将输入栏分块,给每一块输入栏以自己的显示格式。修改west/admin.py
class ContactAdmin(admin.ModelAdmin):
fieldsets = (
[‘Main’,{
‘fields’:(‘name’,’email’),
}],
[‘Advance’,{
‘classes’: (‘collapse’,), # CSS
‘fields’: (‘age’,),
}]
)
Inline显示
class TagInline(admin.TabularInline):
model = Tag
class ContactAdmin(admin.ModelAdmin):
inlines = [TagInline] # Inline
fieldsets = (
[‘Main’,{
‘fields’:(‘name’,’email’),
}],
[‘Advance’,{
‘classes’: (‘collapse’,), # CSS
‘fields’: (‘age’,),
}]
)
admin.site.register(Contact, ContactAdmin)
admin.site.register([Character])
列表页的显示
自定义该页面的显示,比如在列表中显示更多的栏目,只需要在ContactAdmin中增加list_display属性:
list_display = (‘name’,’age’, ’email’) # list
列表页增加搜索栏。使用search_fields说明要搜索的属性:
search_fields = (‘name’,)
OK~~~~~~~~~~~~~~~