UUIDField из расширений django недоступен в представлениях на основе классов

У меня есть веб-приложение, где я использую пару UUIDFields. В пользовательском интерфейсе администратора в представлениях на основе функций и в другом коде 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)

В представлениях на основе функций для создания JSON для DynaTree:

pct_json['tooltip'] = 'ct-'+pct.ct_id + " : " +pct.description

Но в CBV возникает ошибка:

fields =['published','prj_name','data_name','ct_id',]

Любые идеи о том, как сделать эту работу? Я только хочу представить их для отображения, а не для редактирования.

Спасибо

2 ответа

Решение

Я не уверен, является ли это единственным или лучшим способом решения проблемы. Но, поскольку мне все равно нужно было использовать 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? Это как минимум обходной путь.

Это может быть глупый вопрос, но вы пытались поставить ct_id в кавычках?

fields = [
    'published',
    'prj_name',
    'data_name', 
    'ct_id',
]
Другие вопросы по тегам