Python Django框架 2019(05)

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~~~~~~~~~~~~~~~

发表评论