如何告诉django-tables2我想在表中包含哪些列?我知道这个Column属性是 'visible',可以设置为False.但是我有一个包含许多字段的模型,并且只想显示其中的一些,因此编写所有列的完整列表,只是为了告诉它们大部分都不可见,这似乎不是正确的方法.
我正在寻找的是一种提供要显示的列名列表的方法,如果可行的话甚至可以让用户能够选择他想要的列.
另一个解决方案出现在我的脑海中 - 默认情况下将'visible'属性设置为False,但由于它是在Column类中定义的,我仍然需要编写一个完整的列表.
由于我没有找到任何django-tables2讨论论坛,我在这里问.
我开始使用django-tables2(我可以从第一印象中强烈推荐),我问自己如何实现列过滤.我没有找到相应的文档,但我确定它在某处.
在django-tables2中,我有一个表,我不想分页.我没有指定分页,如文档中所示:
table.paginate(page=request.GET.get('page', 1), per_page=25)
Run Code Online (Sandbox Code Playgroud)
表格仍然是分页,大概是默认情况下.在RequestConfig类文档字符串表示,通过假值PAGINATE禁用分页,但我在它模糊.以下是我在视图类中尝试过的选项:
my_table.paginate = False
RequestConfig(request).configure(my_table, paginate=False)
RequestConfig(request).configure(my_table).paginate(False)
RequestConfig(request).configure(my_table, {table.paginate:False})
RequestConfig(request).configure(my_table, {paginate:False})
RequestConfig(request).configure(my_table, {"paginate":False})
Run Code Online (Sandbox Code Playgroud) 文档说:
如果表由模型支持,数据库将处理排序.如果不是这种情况,则使用Python cmp函数,并且在比较不同类型时使用以下机制作为回退:...
但是,这可能在一个表是由模型的支持下,在自定义列?例如
class MyModel(models.Model):
x = models.IntegerField()
y = models.IntegerField()
def z(self):
return x+y
class MyTable(tables.Table):
z = tables.Column()
class Meta:
model = MyModel
Run Code Online (Sandbox Code Playgroud)
当我尝试这样的事情时,列显示OK,但是当我点击列标题进行排序时,我收到此错误:
渲染时捕获FieldError:无法将关键字u'z'解析为字段.选择是:......
显然这是因为在数据库表中找不到z.
有没有解决的办法?
我正在尝试使用django-tables2为我的应用程序创建一些表并遇到一些困难.我使用的是Python 2.7和Django 1.7.我正在按照教程,遇到了问题.
我到了需要创建Table类进行自定义的地步.但是,每当我这样做,我会收到以下错误:
预期的表或查询集,而不是'str'.
在做了一些 研究之后,看起来我正在使用旧版本的django-tables2.但是,我昨天刚安装它pip install django-tables2并在半小时前更新了它.知道如何让django-tables2正常工作吗?
编辑 - 问题解决了.我用的是{% render_table people %}代替{% render_table table %}
在我的Django项目中,我需要有表,哪些列是动态的,并且取决于数据库中的内容.所以我在这里找到了一个解决方案,它有效,但有一点问题.这是我正在动态扩展的表的类:
class ClientsTable(tables.Table):
class Meta:
model = Client
attrs = {"class": "paleblue", "orderable":"True", "width":"100%"}
fields = ('name',)
def __init__(self, *args, **kwargs):
super(ClientsTable, self).__init__(*args, **kwargs)
self.counter = itertools.count()
def render_row_number(self):
return '%d' % next(self.counter)
def render_id(self, value):
return '%s' % value
Run Code Online (Sandbox Code Playgroud)
这是扩展类的方法:
def define_table(roles):
attrs = dict((r.name, tables.Column() for r in roles)
klass = type('DynamicTable', (ClientsTable,), attrs)
return klass
Run Code Online (Sandbox Code Playgroud)
当我在views.py中创建一个像这样的表:
table = define_table(roles)(queryset)
Run Code Online (Sandbox Code Playgroud)
该表显示了我想要的列,但在html代码中,我看到它忽略了attrs:
{"class": "paleblue", "orderable":"True", "width":"100%"}
Run Code Online (Sandbox Code Playgroud)
所以paleblue没有css风格,这对我很重要.我觉得它可能是Meta类的东西但是字段和模型正在工作,所以我不知道为什么没有attrs.
我已经尝试过阅读文档和以前对这个问题的答案而没有太多运气.
我有一堆学生课程注册,我希望看到一些选定的注册与学生的一些属性相结合.到目前为止没有运气......我会请求你的建议!
这是模型:
class Student(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
netID = models.CharField(max_length=8)
class Registration(models.Model):
student = models.ForeignKey(Student)
course = models.ForeignKey(Course)
attendance_M = models.BooleanField(default=False)
attendance_Tu = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)
这是tables.py:
class AttendanceTable(tables.Table):
netID = tables.Column(accessor='Student.netID')
first = tables.Column(accessor='Student.first_name')
last = tables.Column(accessor='Student.last_name')
class Meta:
model = Registration
attrs = {"class": "paleblue"}
fields = ('attendance_M', 'attendance_Tu',)
sequence = ('netID', 'first', 'last', 'attendance_M', 'attendance_Tu',)
Run Code Online (Sandbox Code Playgroud)
虽然我正在获取出勤率值的数据,但学生的外国专栏中没有任何内容.
netID First Last Attendance M Attendance Tu
— — — ? ?
Run Code Online (Sandbox Code Playgroud)
如果我使用model = Student启动Table并对Registration表使用访问器,这是同样的交易,这是相同的交易.
我觉得我错过了很有概念性和关键性的东西 - …
我使用django-tables2来显示页面中的一些数据,现在我想将单元格链接到某个URL,但链接URL如下:
url(r'^(?P\w +)/(?P\d +)/ $','pool.views.pooldatestock',name ="pool_date_stock"),
我读了django-tables2的文件,但我找不到关于这个问题的一些例子.
表格在页面的网址中显示如下:http://127.0.0.1:8000/pool/20111222 /
我试着在tables.py中写这个:
Run Code Online (Sandbox Code Playgroud)class PoolTable(tables.Table): number = tables.LinkColumn('pool.views.pooldatestock', args=[A('number')]) date = tables.Column()
然后我试着写:
class PoolTable(tables.Table):
number=tables.LinkColumn('pool.views.pooldatestock',
args=[A('date')],
kwargs=A('number')])
date = tables.Column()
Run Code Online (Sandbox Code Playgroud)
但它也是错误的......
有人可以告诉我如何解决这个问题吗?或者我应该创建自己的表视图,而不是django-tables.
谢谢.圣诞快乐:)
我想用django-tables2创建一个表,以便不同的行具有不同的属性.
默认情况下,我得到了
<tr class="odd">
Run Code Online (Sandbox Code Playgroud)
要么
<tr class="even">
Run Code Online (Sandbox Code Playgroud)
如何为某些行指定自己的类?
同样,如果我有一个CheckBoxColumn并且我为此列指定了一些数据,那么它将进入以下值:
<input type="checkbox" name="col" value="123"/>
Run Code Online (Sandbox Code Playgroud)
这非常适合确定选中了哪个复选框.但是,如何在创建表时将一些复选框设置为选中状态?
我的场景:用户从大表中选择一些行.例如,表格有
用户选择aaple 5和黄瓜7.
然后我想显示所有苹果和所有黄瓜,因为用户至少挑选了一个苹果和至少一个黄瓜.这允许用户查看其他相关条目:
但是,我想通过使用css和/或显示选中的复选框来突出显示用户实际选择的条目:
我正在使用MySQL视图(Create View as Select ...)并已成功管理以将视图连接到这样的模型:
#models.py
class Dashboard(models.Model):
devenv = models.CharField(max_length=30, primary_key=True)
numberofissues = models.BigIntegerField()
class Meta:
managed=False
db_table = 'stability_dashboard'
Run Code Online (Sandbox Code Playgroud)
我还设法使用示例中的样板代码在表格中显示数据:
#tables.py
class DashboardTable(tables.Table):
class Meta:
model = Dashboard
attrs = {'class': 'paleblue'}
#views.py
def dashboard(request):
table = DashboardTable(Dashboard.objects.all())
RequestConfig(request).configure(table)
return render(request, 'uptime/dash.html', {'table': table})
Run Code Online (Sandbox Code Playgroud)
我现在想将每列中显示的标题更改为更容易理解的内容,包括空格,例如,而不是'devenv'=>'开发环境'