[英]How to combine django-modeltranslation and django-reversion apps?
Question : how to combine django-modeltranslation and django-reversion apps? 问题 :如何将django-modeltranslation和django-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_ru
, head_kz
, head_en
。 I set these fields in translation.py
and settings.py
files. 我在
translation.py
和settings.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.