Django REST Framework не может отображать переводимые поля

Я реализую REST API для сайта, основанного на Django, используя среду REST Django и приложения Django-hvad.

Проблема: переведенные поля в REST Viewset вызывают ошибку.

Обратите внимание: еще один вопрос адресован и решает аналогичную проблему, но она не относится к версиям приложения, которые я установил, а именно:

  1. Джанго 1,8
  2. hvad 1.2.0, который имеет или, скорее, заявляет, что имеет встроенную поддержку REST framework, как объяснено здесь
  3. Django Rest Framework 3.1.1

Вот моя модель:

class Website(TranslatableModel):

    name = models.CharField(max_length=100,unique=True)
    default_url = models.URLField(max_length=100,unique=True)
    created = models.DateTimeField(auto_now_add=True)

    translations = TranslatedFields(
        url = models.URLField(max_length=100, unique=True),
        description = models.TextField(null=True,blank=True),
    )

И мой urls.py выглядит так (для краткости я вывез импорт):

# Serializer
class WebsiteSerializer(HyperlinkedTranslatableModelSerializer):
    class Meta:
        model = Website
        fields = ('name','default_url','url','description')

# Viewset
class WebsiteViewSet(viewsets.ModelViewSet):
    queryset = Website.objects.language().all()
    serializer_class = WebsiteSerializer

# REST Router
router = routers.DefaultRouter()
router.register(r'websites', WebsiteViewSet)


# URL Patterns
urlpatterns = patterns( '', 
    # ... non translated urls
)

urlpatterns += i18n_patterns('',

    url(r'^api/v1/', include('rest_framework.urls', namespace='rest_framework')),
    url(r'^api/v1/', include(router.urls)),
    url(r'^admin/', include(admin.site.urls)),
)

С этим, URL /it/api/v1/websites/ выдаёт досадную ошибку:

WrongManager at / it / api / v1 / website / Чтобы получить доступ к переведенным полям, таким как 'url' из непереведенной модели, вы должны использовать менеджер с поддержкой перевода. Для непереводимых моделей вы можете получить один, используя hvad.utils.get_translation_aware_manager. Для переводимых моделей используйте метод language().

Примечание: замена /it Префикс с любым другим языковым кодом никак не помогает.

Что я пробовал до сих пор:

  1. в WebsiteViewSet класс, указав фиксированный аргумент для language() функция.
  2. используя TranslationMixin (не зависящий от языка сериализатор, раскрывающий все переводы), следуя приведенным здесь инструкциям. Я изменил строку запроса так: queryset = Website.objects.untranslated().prefetch_related('translations').all()
  3. перемещение определений URL-адресов API за пределы шаблонов i18n

Но во всех случаях это всегда дает одну и ту же ошибку.

Что мне не хватает?

0 ответов

Другие вопросы по тегам