导读:很多朋友问到关于片django后台怎么获取表单多选框的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!
django-admin的多选框怎么做出来的
checkbox 的name设置成一样的。 后台获取的时候直接:request.REQUEST.getlist('name') 就可以了
django-xadmin后台列表页勾选复选框怎么打开?
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提交修改后其后的文章信息都会出错.
Django多条件筛选
你在循环category 时,没有提供car的值,在循环car的时候没有提供category 的值,那当然在构成a标签的href属性的时候必然会缺少一个参数值。按你的逻辑来讲应该使用嵌套循环,如下:
{% for category in all_category %}
{% for car in car_brands %}
a href="?car={{ car.id }}item={{ category.id }}"span{{ car.car_name }}/a
{% endfor %}
{% endfor %}
{% for product in all_products.object_list %}
!--产品信息显示--
{% endfor%}
最后推荐一个非常棒的免费DJango教程刘江的Django教程
django 获取表单页面复选框的值 报错
class AddBookForm(forms.Form):
def __init__(self,*args,**kwargs):
...
self.fields['authors'].choices = [(author.id,author.first_name + " " + author.last_name) for author in Author.objects.all()]
self.fields['publisher'].choices = [('','-----------')] + [(publisher.id,publisher.name) for publisher in Publisher.objects.all()]
...
form里这两行有问题,这行如果你想重新赋值的话应该给一个queryset,而不是列表。如果你想测试一下的话可以先把这行注释掉,然后你在提交看看表单验证是否能通过。如果通过了那确定问题就是这里了。我想我应该不会错。。。
django将从数据库获取的值作为下拉选择框(Choice_field)的默认值
首先,在django 视图函数中,传递 obj_list = [1, 2, 3] 类似这样的一个列表。
def show_data(request):
obj_list = [1, 2, 3]
pass
return render_to_response('index.html', {'obj_list': obj_list})
然后在 index.html 模板文件中,部分代码如下
select
{% for obj in obj_list %}
option value ="{{ forloop.counter }}"{{ obj }}/option
{% endfor %}
/select
这样,模板就能自动根据传递过来的数据,进行显示。
这样说的已经很详细了,如果还是不懂。自己去django官网看相应版本的文档去吧。
结语:以上就是首席CTO笔记为大家介绍的关于片django后台怎么获取表单多选框的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。