简体   繁体   English

如何结合django-modeltranslation和django-reversion应用程序?

[英]How to combine django-modeltranslation and django-reversion apps?

Question : how to combine django-modeltranslation and django-reversion apps? 问题 :如何将django-modeltranslationdjango-reversion应用程序结合在一起?

I have next problem: in models.py file I registered Slide model which has head field. 我有下一个问题:在models.py文件中,我注册了具有head字段的Slide模型。 This field has several other fields for translation like head_ru , head_kz , head_en . 该字段还有其他几个需要翻译的字段,例如head_ruhead_kzhead_en I set these fields in translation.py and settings.py files. 我在translation.pysettings.py文件中设置了这些字段。 In DB slide table has all this fields. 在数据库幻灯片表中具有所有这些字段。 Also I show all this fields in form where user can edit data. 我还以用户可以编辑数据的形式显示了所有这些字段。 When user submit the form django-reversion create version only for head field and ignore other fields. 当用户提交表单django-reversion时,仅为head字段创建版本,而忽略其他字段。 How to fix this problem? 如何解决这个问题?

models.py: 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: 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: settings.py:

LANGUAGES = (
    ('ru', 'Russian'),
    ('en', 'English'),
    ('kz', 'Kazakh'),
)

views.py: 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)

最后我找到了解决方案:

@reversion.register(fields=['head', 'head_ru', 'head_en', 'head_kz',])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM