gpt4 book ai didi

python - Django_tables2 : Dynamically hiding columns based on the request

转载 作者:太空狗 更新时间:2023-10-30 00:40:56 26 4
gpt4 key购买 nike

我有一个基于具有多个字段的模型的表。我还有两个 TemplateColumn,一个用于编辑特定实体,另一个用于删除它。这是我的代码:

class EntitetTable(tables.Table):
edit = tables.TemplateColumn(template_name='azuriranje/izmena.html',
orderable=False, visible=False)
delete = tables.TemplateColumn(template_name='azuriranje/brisanje.html',
orderable=False, visible=False)

class Meta:
abstract = True
attrs = {'class': 'paleblue', }

class TipPredmetaTable(EntitetTable):
class Meta(EntitetTable.Meta):
model = models.TipPredmeta

现在,我的系统中有一个用户层次结构,只有作为簿记员的用户才能编辑和删除数据。话虽如此,我试图在我的 View 中执行检查以隐藏两个 TemplateColumn:

@login_required
def tippredmeta(request):
try:
korisnik = request.user.radnik
except ObjectDoesNotExist:
return HttpResponseRedirect("/main/")
queryset = TipPredmeta.objects.all()
table = TipPredmetaTable(queryset)
if korisnik.is_kustos:
table.edit.visible = True
table.delete.visible = True
RequestConfig(request).configure(table)
return render_to_response('azuriranje/tabelaPrikaz.html', {'table': table, },
context_instance=RequestContext(request))

但是,我在 table.edit.visible = True 行得到以下异常:

Exception Type:  AttributeError
Exception Value: 'TipPredmetaTable' object has no attribute 'edit'

现在,这是我尝试过的事情:- 首先我考虑过使用字段并排除,但我无法动态更改它。- 然后我考虑将所有这些放入 __init__ 方法中,有效地编辑和删除我的 EntitetTabel 的属性(这个想法是为了解决错误)但是当错误消失时,我的 TemplateColumns 也是如此.我尝试通过字段显示它们,但这没有帮助。我的猜测是父类(super class) tables.Table 不是那样工作的。

最佳答案

您可以使用 tables.Tableexclude 属性来排除不需要的字段。它在创建表实例后也有效。所以在你的情况下,你可以做这样的事情。

首先让您的列可见(我删除了 visible=False):

class EntitetTable(tables.Table):
edit = tables.TemplateColumn(template_name='azuriranje/izmena.html',
orderable=False)
delete = tables.TemplateColumn(template_name='azuriranje/brisanje.html',
orderable=False)

然后根据您的情况,您可以排除编辑和删除字段:

table = TipPredmetaTable(queryset)
if not korisnik.is_kustos:
table.exclude = ('edit', 'delete',)

关于python - Django_tables2 : Dynamically hiding columns based on the request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20033191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com