其他分享
首页 > 其他分享> > Django模型与后台管理

Django模型与后台管理

作者:互联网

1.在settings.py中配置数据库。


DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME': 'mysite',

'HOST': '192.168.1.1',

'USER': 'root',

'PASSWORD': 'pwd',

'PORT': '3306',

}

}

2.修改时区:TIME_ZONE设置为国内所在的时区Asia/Shanghai

3.添加app,INSTALLED_APPS中会自动包含下列条目

django.contrib.admin:admin管理后台站点

django.contrib.auth:身份认证系统

django.contrib.contenttypes:内容类型框架

django.contrib.sessions:会话框架

django.contrib.messages:消息框架

django.contrib.staticfiles:静态文件管理框架

4.创建模型

它能捕获全部常见的模型问题。

5.迁移


python manage.py makemigrations polls

6.在数据库中创建表:


python manage.py migrate

7.修改模型时的操作分三步:

  1. admin后台管理站点

python manage.py createsuperuser

9.修改后台url


from django.conf.urls import url

from django.contrib import admin

urlpatterns = [

url(r'^my/set/', admin.site.urls),

]

这样,我们必须访问http://127.0.0.1:8000/my/set/才能进入admin界面。

10.登入站点

11.4. 在admin中注册app

打开polls/admin.py文件,加入下面的内容:


from django.contrib import admin

from .models import Question

admin.site.register(Question)

12.__str__() 就是其中一例,其作用是让模型知道如何显示自身.

13.数据访问:all(),filter(),exclude(),get(),value(),value_list()

Publisher.objects.all() :

参考网址:https://blog.csdn.net/Fe_cow/article/details/80669146

首先, Publisher 是我们定义的模型。想查找数据就应该使用相应的模型。

然后,访问 objects 属性。这叫管理器(manager),管理器负责所有“表层”数据操作,包括(最重要的)数据查询。所有模型都自动获得一个 objects 管理器,需要查询模型实例时都要使用它。

最后,调用 all() 方法。这是 objects 管理器的一个方法,返回数据库中的所有行。虽然返回的对象看似一个列表,但其实是一个查询集合(QuerySet)——表示数据库中一系列行的对象。

所有数据库查找操作都遵守这种一般模式,即在依附于模型的管理器上调用方法,执行相应的查询。

14.过滤数据:filter() 方法过滤数据,返回一个查询集合

Publisher.objects.filter(name__contains="press")


SELECT id, name, address, city, state_province, country, website

FROM books_publisher

WHERE name LIKE '%press%';

15.检索单个对象:get()


Publisher.objects.get(country="U.S.A.")

得到多个对象的查询和不返回结果都报错。

16.排序数据: order_by() 方法

1.如果想根据多个字段排序(以第一个字段排不出顺序时使用第二个字段),提供多个参数

2.还可以反向排序。方法是在字段名称前面加上“-”(减号)

3.虽然 order_by() 有一定的灵活性,但是每次都调用它相当繁琐。多数时候,我们始终使用同一个字段排序。


class Meta:

ordering = ['name']

17.可以将过滤和排序一起执行:


Publisher.objects.filter(country="U.S.A.").order_by("-name")

18.切片数据:


Publisher.objects.filter(country="U.S.A.").order_by("-name")

19.只更新需要修改的值: update() 方法有返回值,是一个整数,表示修改的记录数量

Publisher.objects.filter(id=52).update(name='ApressPublishing')

20.删除对象:从数据库中删除一个对象,只需在对象上调用 delete() 方法


p = Publisher.objects.get(name="O'Reilly")

p.delete()

Publisher.objects.filter(country='USA').delete()

Publisher.objects.all().delete()

21.自定义标注的方式是为模型字段指定verbose_name 参数

(不太明白标注是什么,待补充)

22.自定义修改列表:


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)

显示的字段名称。当然,模型中必须有这些字段。

23.添加一个简单的搜索框。在 AuthorAdmin 类中添加 search_fields :


class AuthorAdmin(admin.ModelAdmin):

list_display = ('first_name', 'last_name', 'email')

search_fields = ('first_name', 'last_name')

24.添加过滤器:

1.为 list_filter 属性赋值一个字段元组,在修改列表页面的右边创建过滤器。


class BookAdmin(admin.ModelAdmin):

list_display = ('title', 'publisher', 'publication_date')

list_filter = ('publication_date',)

2。提供日期过滤器的另一种方法是使用date_hierarchy 选项,如下所示:


class BookAdmin(admin.ModelAdmin):

list_display = ('title', 'publisher','publication_date')

list_filter = ('publication_date',)

date_hierarchy = 'publication_date'

25.修改默认排序

修改默认的排序方式,让修改列表页面的图书始终以出版日期倒序排列。默认情况下,修改列表根据模型中class Meta 里的 ordering 属性排序,不过我们没设定,因此没有顺序。


class BookAdmin(admin.ModelAdmin):

list_display = ('title', 'publisher','publication_date')

list_filter = ('publication_date',)

date_hierarchy = 'publication_date'

ordering = ('-publication_date',)

26.定制字段的排序方式:


class BookAdmin(admin.ModelAdmin):

list_display = ('title', 'publisher', 'publication_date')

list_filter = ('publication_date',)

date_hierarchy = 'publication_date'

ordering = ('-publication_date',)

27.定制多对多关系字段


class BookAdmin(admin.ModelAdmin):

list_display = ('title', 'publisher','publication_date')

list_filter = ('publication_date',)

date_hierarchy = 'publication_date'

ordering = ('-publication_date',)

filter_horizontal = ('authors',)
  1. raw_id_fields 选项:

class BookAdmin(admin.ModelAdmin):

list_display = ('title', 'publisher','publication_date')

list_filter = ('publication_date',)

date_hierarchy = 'publication_date'

ordering = ('-publication_date',)

filter_horizontal = ('authors',)

raw_id_fields = ('publisher',)

标签:publication,admin,模型,list,Django,filter,date,后台,name
来源: https://www.cnblogs.com/lalavender/p/10744921.html