我有一个Web应用程序,我使用了几个UUIDField。在Admin UI中,在基于函数的视图和其他Python代码中,这些字段按预期工作。但是,当尝试在CBV中的“字段”中列出它们时,我收到错误:
FieldError(message) django.core.exceptions.FieldError: Unknown field(s) (ct_id)
此处的主题字段为 ct_id 。但另一个人做同样的事情。
来自models.py:
ct_id = UUIDField(_("UUID"), version=4, help_text=_('A unique identifier for this PCT.'))
如上所述,它们在管理员列表中工作:
list_display = ('data_name','prj_name','published','ct_id')
admin.site.register(DvBoolean, DvBooleanAdmin)
在基于函数的视图中为DynaTree创建JSON:
pct_json['tooltip'] = 'ct-'+pct.ct_id + " : " +pct.description
但在CBV中,这会引发错误:
fields =['published','prj_name','data_name','ct_id',]
有关如何使这项工作的任何想法?我只想渲染它们以供显示,而不是用于编辑。
由于
答案 0 :(得分:0)
这可能是一个愚蠢的问题,但您是否尝试将ct_id
放入引号?
fields = [
'published',
'prj_name',
'data_name',
'ct_id',
]
答案 1 :(得分:0)
我不确定这是解决问题的唯一或最佳方式。但是,因为我需要在视图中使用get_context_data()。我现在这样做是为了让ct_id进入视图模板:
def get_context_data(self,**kwargs):
context = super(DvStringUpdateView, self).get_context_data(**kwargs)
semlinks = []
obj = get_object_or_404(DvString,pk=context['object'].id)
if obj.resource_uri:
urilist = obj.resource_uri.splitlines()
attrlist = obj.sem_attr.splitlines()
for n in range(0,len(urilist)):
semlinks.append(attrlist[n] + ' = ' + unquote(urilist[n]))
context['semlinks'] = semlinks
context['ct_id'] = obj.ct_id
return context
UUIDField的定义方式是否存在错误导致其无法在CBV中使用?这至少是一种解决方法。