我有一个基于具有多个字段的模型的表.我还有两个TemplateColumns,一个用于编辑特定实体,另一个用于删除它.这是我的代码:
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
Run Code Online (Sandbox Code Playgroud)
现在,我的系统中有一个用户层次结构,只有作为簿记员的用户才能编辑和删除数据.话虽这么说,我试图在我的视图中执行检查以隐藏两个TemplateColumns:
@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))
Run Code Online (Sandbox Code Playgroud)
但是,我table.edit.visible = True在行上得到以下异常:
Exception Type: AttributeError
Exception Value: 'TipPredmetaTable' object has no attribute 'edit'
Run Code Online (Sandbox Code Playgroud)
现在,这里是我尝试过的事情: - 首先我考虑使用字段和排除,但我无法动态地改变它.- 然后我考虑将所有这些放入__init__方法中,有效地编辑和删除我的EntitetTabel的属性(想法是解决错误)但是当错误消失时,我的TemplateColumns也是如此.我尝试通过字段显示它们,但这没有帮助.我的猜测是超类,tables.Table,不能那样工作.
jbu*_*bub 12
您可以使用for 的exclude属性tables.Table来排除不需要的字段.它也可以在创建表实例后工作.所以在你的情况下,你可以做这样的事情.
首先让你的列可见(我删除了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)
Run Code Online (Sandbox Code Playgroud)
然后根据您的条件,您可以排除编辑和删除字段:
table = TipPredmetaTable(queryset)
if not korisnik.is_kustos:
table.exclude = ('edit', 'delete',)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3427 次 |
| 最近记录: |