我试图将数据从DJANGO视图推送到Tables对象,并将其作为参数传递。在这种情况下,我想将名为 doc_id 的变量传递给名为 tableName
的Tables2对象在本例中,我将doc_id设置为1,并将其传递给
查看
def editorView(request):
doc_id = 1
table = tableName(UserProfile.objects.filter(), doc_id=doc_id)
表格
class tableName(tables.Table):
tbl_doc_id = None ## Creating a temporary variable
def __init__(self, *args, **kwargs):
temp = kwargs.pop("doc_id") ## Grab doc_ID from kwargs
super(tableName, self).__init__(*args, **kwargs)
self.tbl_doc_id = temp ## Assign to self.tbl_doc_id for use later
### Do something with tbl_doc_id
modelFilter = model.objects.filter(pk = tbl_doc_id)
运行调试器时,我可以看到tbl_doc_id仍被指定为None,而不是1。
将参数传递给Tables2实例的正确方法是什么?有可能吗?
编辑:为上下文添加更多信息。
在现实世界中,我有一个观点。该视图从名为doc_id的URL中获取参数。该doc_id用于从名为' MaterialCollection'的模型中获取对象,并将其作为' mc'返回。
' MC'然后传递到表
查看
def editorView(request, doc_id):
try:
mc = MaterialCollection.objects.get(pk = doc_id)
except Material.DoesNotExist:
raise Http404("Document does not exist")
config = RequestConfig(request)
unnassigned_User_Table = unassignedUserTable(UserProfile.objects.filter(), mc=mc)
... Other code + Render ...
从我的表中,我创建了一个自定义LinkColumn。 linkColumn用于根据模型' UserProfile'和mc中的许多属性构建URL。
表格
class unassignedUserTable(tables.Table):
mc = None
def __init__(self, *args, **kwargs):
temp_mc = kwargs.pop("mc")
super(unassignedUserTable, self).__init__(*args, **kwargs)
self.mc = temp_mc
current_Assignment = "NONE"
new_Assignment = "AS"
assign_Reviewer = tables.LinkColumn('change_Review_AssignmentURL' , args=[ A('user'), current_Assignment, new_Assignment, mc, A('id')], empty_values=(), attrs={'class': 'btn btn-success'})
class Meta:
model = UserProfile
... Setup excludes/sequence/attributes...
在这个特定的例子中。 mc具有FK到UserProfile(以1:M为单位)的关系。
答案 0 :(得分:1)
我看到您的表类名称为tableName
,因此如果您希望__init__
按预期工作,请更改以下行:
super(unassignedUsers, self).__init__(*args, **kwargs)
到
super(tableName, self).__init__(*args, **kwargs)
除了这个明显的问题,你的代码还有一些问题:
TableName
代替tableName
)NameTable
)__init__
中的内容,就像你在这里做的那样。你确定你真的需要这样做吗?