码迷,mamicode.com
首页 > 编程语言 > 详细

python---django中orm的使用(3)admin配置与使用

时间:2018-03-27 01:55:46      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:lap   web   分享   use   管理   解决   rbo   项目   display   

新建项目,并开启

python manage.py runserver 8080

访问admin页面

http://127.0.0.1:8080/admin

技术分享图片

此时并没有账号和密码:需要先配置数据库,在生成用户

配置数据库
python manage.py makemigrations
python manage.py migrate

创建用户
python manage.py createsuperuser
需要填写用户名,邮箱,密码

技术分享图片

管理Django数据库的APP--->phpmyadmin,web版管理数据库

创建数据表:

技术分享图片
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models

# Create your models here.


class Publisher(models.Model):
    name = models.CharField(max_length=30, verbose_name="名称")
    address = models.CharField("地址", max_length=50)
    city = models.CharField(城市, max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

    class Meta:
        verbose_name = 出版商
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name


class Author(models.Model):
    name = models.CharField(max_length=30)

    def __str__(self):
        return self.name


class AuthorDetail(models.Model):
    sex = models.BooleanField(max_length=1, choices=((0, ), (1, ),))
    email = models.EmailField()
    address = models.CharField(max_length=50)
    birthday = models.DateField()
    author = models.OneToOneField(Author)


class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()
    price = models.DecimalField(max_digits=5, decimal_places=2, default=10)

    def __str__(self):
        return self.title
models.py
技术分享图片
python manage.py makemigrations
python manage.py migrate
配置数据库

在admin.py中配置数据库进行管理

from __future__ import unicode_literals

from django.contrib import admin
from app01.models import *

# Register your models here.

admin.site.register(Book)
admin.site.register(Publisher)   #会显示设置的verbose_name  在Admin中字段的显示名称
admin.site.register(Author)
技术分享图片
python manage.py runserver 8080
启动项目

再次访问

技术分享图片

在web页面进行添加:

若是有中文则会出错,解决方法请看:python---补充django中文报错

若是想将页面设置为中文显示,可以设置settings文件:

#LANGUAGE_CODE = en-us
LANGUAGE_CODE = zh-hans

由于在建立orm对象时,__str__中只返回了title,所以页面显示只有书籍名称,其他信息并不全

 

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()
    price = models.DecimalField(max_digits=5, decimal_places=2, default=10)

    def __str__(self):    #__str__需要返回字符串
    return self.title    

 

技术分享图片

当没有__str__时,只会显示出

技术分享图片

 要想显示更多信息,需要我们在admin.py模块中自定义类,来设置显示的字段

class MyAdmin(admin.ModelAdmin):
    list_display = ("title","price","publisher")    #设置显示的字段,与原来__str__无关了


admin.site.register(Book,MyAdmin)   #使MyAdmin与Book产生联系
admin.site.register(Publisher)
admin.site.register(Author)

技术分享图片

可以修改models中的字段,设置别名在admin中显示

 

class Book(models.Model):
    title = models.CharField(max_length=100,verbose_name="书名")

 

技术分享图片

搜索框:

class MyAdmin(admin.ModelAdmin):
    list_display = ("title","price","publisher")    #设置显示的字段,与原来__str__无关了
    search_fields = ("title","price",)      #会生成搜索框,元组中是允许搜索的字段

技术分享图片

过滤器:

 

class MyAdmin(admin.ModelAdmin):
    list_display = ("title","price","publisher")    #设置显示的字段,与原来__str__无关了
    search_fields = ("title","price",)      #会生成搜索框,元组中是允许搜索的字段
    list_filter = ("price","publisher")    #生成过滤器,以price过滤

技术分享图片

 

 排序:

 

class MyAdmin(admin.ModelAdmin):
    list_display = ("title","price","publisher")    #设置显示的字段,与原来__str__无关了
    search_fields = ("title","price",)      #会生成搜索框,元组中是允许搜索的字段
    list_filter = ("price","publisher")   #过滤器
    ordering = ("-price",)       #排序,默认id排序,升序,降序,则使用在字段前使用  -

技术分享图片

显示和隐藏:在添加和修改时使用:

 

    fieldsets = [
        (None, {fields: [title]}),    #None代表其他字段隐藏,fields中字段显示
    ]

技术分享图片

fieldsets = [
        (None, {fields: [title]}),
        (price information, {fields: [price, "publisher"], }),  #组名为price information
]

技术分享图片

    fieldsets = [
        (None, {fields: [title]}),
        (price information, {fields: [price, "publisher"], classes: [collapse]}),  #classes样式折叠
    ]

技术分享图片

技术分享图片

 

python---django中orm的使用(3)admin配置与使用

标签:lap   web   分享   use   管理   解决   rbo   项目   display   

原文地址:https://www.cnblogs.com/ssyfj/p/8654648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!