@nurzhannogerbek

Как объединить приложения django-modeltranslation и django-reversion?

Здравствуйте! Помогите пожалуйста разобраться.

Использую в своем проекте приложения django-reversion и django-modeltranslation.

Столкнулся со следующей проблемой: зарегистрировал модель данных Slide для контроля изменений @reversion.register(). В модели данных Slide есть поле head, для которой применил приложение django-modeltranslation. В итоге в базе данных в таблице Slide создаются поля head, head_ru, head_en, head_kz. Все эти поля я вывожу в форму, где пользователь может редактировать данные. При отправки формы (submit) в БД (в таблице REVERSION_VERSION) сохраняется изменения лишь для поля head.

Вопрос у меня следующий, как зарегистрировать поля head_ru, head_en, head_kz созданные приложением django-modeltranslation в django-reversion? Возможно ли это?

models.py:
from django.db import models
import reversion

@reversion.register()
class Slide(models.Model):
    head = models.CharField(verbose_name='Title', max_length=200, blank=False,)


translation.py:
from modeltranslation.translator import TranslationOptions
from modeltranslation.translator import translator
from .models import Slide

class SlideTranslationOptions(TranslationOptions):
    fields = ('head',)

translator.register(Slide, SlideTranslationOptions)


settings.py:
LANGUAGES = (
    ('ru', 'Russian'),
    ('en', 'English'),
    ('kz', 'Kazakh'),
)


views.py:
class SlideEditView(RevisionMixin, UpdateView):
    template_name = 'slider/edit_slide.html'
    form_class = SlideForm
    model = Slide

    def form_valid(self, form):
        form.save()
        data = dict()
        data['form_is_valid'] = True
        context = {'slides': Slide.objects.all(),}
        data['html_slides'] = render_to_string('slider/slides.html', context)
        reversion.set_comment('EDIT')
        return JsonResponse(data)
  • Вопрос задан
  • 442 просмотра
Решения вопроса 1
в @reversion.register() можно параметр fields передать, это те поля за которыми reversion будет следить
@reversion.register(fields=['head', 'head_en', 'head_kz',])
class Slide(models.Model):
    head = models.CharField(verbose_name='Title', max_length=200, blank=False,)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы