django-xadmin后台列表页勾选复选框怎么打开?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django-xadmin后台列表页勾选复选框怎么打开?相关的知识,希望对你有一定的参考价值。

如题,怎么打开xadmin后台列表页的勾选框?

参考技术A 1. Django Admin 不适合最终用户使用

Django admin是为管理员设计的, 而不是给最终用户使用的. Django admin的存在是为了方便管理员添加修改删除数据和管理站点任务.

2. 列表显示

如上图, 因为model的默认文本显示是 xxx object, 所以在admin列表页中默认显示的也是xxx object. 如果希望显示更有用的信息 我们可以进行如下设置:

为model写__unicode__()方法
如果希望model在列表页中显示更多项, 则需要使用list_display

__unicode()__例子:
# models.py
from django.db import models

class Article(models.Model):
title = models.CharField(max_length=100)
slug = models.CharField(max_length=100)
content = models.TextField()
is_published = models.BooleanField(default=False)

def __unicode__(self):
return self.title

# admin.py
from django.contrib import admin
from .models import Article

admin.site.register(Article)

结果:

如果希望显示其他项:
# admin.py
from django.contrib import admin
from .models import Article

class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'is_published')

admin.site.register(Article, ArticleAdmin)

结果:

3. 为ModelAdmin增加动作

我们可以为ModelAdmin增加method或function, 以此使admin界面更符合我们的需求.

例如, 我们希望在在admin界面中显示一个明确地URL, 但当我们在model中定义了get_absolute_url()方法后, django admin默认给我们的却是一个与我们想要的URL完全不同的URL. 于是我们可以通过以下方法定义该URL:
# admin.py
from django.contrib import admin
from django.core.urlresolvers import reverse
from django.utils.html import format_html

from .models import Article
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'is_published',)
readonly_fields = ('show_url',)

def show_url(self, instance):
url = reverse('article_detail', kwargs='pl': instance.pk)
response = format_html("""""", url)
return response

show_url.short_description = u"文章预览"
# 显示HTML tag
# 对于用户提交的数据, 永远不要这么设置!
show_url.allow_tags = True

注意, allow_tags属性, 其默认值是False, 如果错误使用将会带来安全隐患. 如果设置为True,
在admin中会允许显示HTML tag. 因此我们使用的原则是, 对于用户输入的信息, 永远不设置allow_tags=True.
只有当其内容是系统生成, 用户无法修改的时, 才能使用allow_tags=True.

4. 不在多用户编辑环境使用list_editable

django admin为我们提供了在列表页修改model属性的功能, 这样方便管理员一次修改多个属性. 如果管理员只有一个人的话,
那就没问题, 但在多用户环境中时, 却是会存在一个很严重的潜在问题. 因为在list页提交的修改信息, 记录的是位置, 而不是model的主键.
举个例子, 文章列表页默认按照创建顺序逆序排列, 用户A打开文章列表页, 并开始修改, 同时用户B增加了一篇新文章, 此时,
当用户A提交修改后其后的文章信息都会出错.追问

大佬,首先我问的是xadmin不是admin,然后我想知道的是如图列表页左侧的勾选框怎么显示勾选,都是为空,然后,额外问一个问题:不知道为啥,把admin.py的代码迁移到adminx.py中后list_display中的自定义字段无法显示,都像图中一样,值的地方为空

以上是关于django-xadmin后台列表页勾选复选框怎么打开?的主要内容,如果未能解决你的问题,请参考以下文章

mfc如何将复选框勾选后,把里面内容实时传到列表框中?

django-xadmin列表页filter关联对象搜索问题

ASP怎么用代码来勾选复选框

jquery实现 点击复选框,勾选所有复选框,再次点击取消勾选,这个功能怎么实现?

pyqt中QTableWidget的勾选框,怎么获取他的勾选状态

pyqt中QTableWidget的勾选框,怎么获取他的勾选状态