'PageSmartLinkWidget' object has no attribute 'language'
16 февраля 2016 г. 4:23
При использовании PageSmartLinkField может возникнуть ошибка AttributeError: 'PageSmartLinkWidget' object has no attribute 'language'. Возможно, какая-то настройка нужна или это недоработка виджета, но ошибку можно исправить, добавив поле "language" и немного подшаманив:
# models.py
from django.db import models
class Example(models.Model):
link = models.CharField('Ссылка на страницу', max_length=255, blank=True)
# admin.py
from django.contrib import admin
from my_app.models import Example
from my_app.forms import ExampleForm
@admin.register(Example)
class ExampleAdmin(admin.ModelAdmin):
fieldsets = (
(None, {
'fields': ('link', 'language'),
}),
)
form = ExampleForm
# forms.py
from __future__ import absolute_import, print_function, unicode_literals
from django import forms
from django.forms.models import ModelForm
from django.forms.widgets import HiddenInput
from django.utils.translation import get_language
from cms.utils.i18n import get_language_tuple
from cms.forms.fields import PageSmartLinkField
from my_app.models import Example
class ExampleForm(ModelForm):
link = PageSmartLinkField(label=u'Ссылка на страницу', required=False, placeholder_text=u'Начните набирать...',
ajax_view='admin:cms_page_get_published_pagelist')
language = forms.ChoiceField(label=_("Language"), choices=get_language_tuple(),
help_text=_('The current language of the content fields.'))
class Meta:
model = Example
exclude = ('language', )
def __init__(self, *args, **kwargs):
super(ExampleForm, self).__init__(*args, **kwargs)
self.fields['language'].widget = HiddenInput()
if not self.fields['language'].initial:
self.fields['language'].initial = get_language()
if 'link' in self.fields:
self.fields['link'].widget.language = self.fields['language'].initial
Обратите внимание, я не зря привёл в качестве примера ещё и ExampleAdmin. Если указываете в admin классе fieldsets, то нужно указать ещё и 'language', иначе не заработает.
Похожие статьи:
Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.
Книга предназначается для широкого круга читателей и, по мнению автора, будет полезна специалистам отдела закупок и логистики, категорийным и финансовым менеджерам, менеджерам по продажам, аналитикам, руководителям и директорам, в компетенции которых принятие решений по управлению ассортиментом.
Комментарии: 0