您的位置:首页 > 移动开发

django第一个app,7

2018-01-23 00:00 204 查看
通过admin页面更好的管理

分开显示:

polls/admin.py

from django.contrib import admin

from .models import Question

class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None,               {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date']}),
]

admin.site.register(Question, QuestionAdmin)

把一对多关联显示,这里额外显示3个

polls/admin.py

from django.contrib import admin

from .models import Choice, Question

class ChoiceInline(admin.StackedInline):
model = Choice
extra = 3

class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None,               {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]

admin.site.register(Question, QuestionAdmin)

choice列展示换位横向展示

class ChoiceInline(admin.TabularInline):

在数据列表里面展示更多的信息,字段和方法都可以

list_display = ('question_text', 'pub_date', 'was_published_recently')

点击字段名是自带排序的,除了方法,没有确定的返回值,不能排序,我们可以这样

定义某字段的排序值为别的值,

改变值为布尔值

改吗字段显示名称

class Question(models.Model):
# ...
def was_published_recently(self):
now = timezone.now()
return now - datetime.timedelta(days=1) <= self.pub_date <= now
was_published_recently.admin_order_field = 'pub_date'
was_published_recently.boolean = True
was_published_recently.short_description = 'Published recently?'

添加一个筛选条件

list_filter = ['pub_date']

添加一个搜索条件,似乎只能添加一个字符串的搜索条件

search_fields = ['question_text']

查找import包的路径,比如django

python -c "import django; print(django.__path__)"

设定项目自己的templates

mysite/settings.py

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]

在manage.py同目录下创建templates/admin。复制django自带的目录下的base_site.html复制到admin文件下,改变内容

{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">Polls Administration</a></h1>
{% endblock %}

项目会自动覆盖原django的文件,而展示这个文件内容,一般最重要的是admin下的index.html,也可以像这样覆盖。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: