我从Django 2一书中通过例子来研究Django。我正在努力改进第10章开始的一个项目。现在,我试图在"django-parler“的帮助下添加多种语言。总的来说,我做到了,但在我看来,有更好的方法。视图被实现为从mixins继承的类。如果在页面上选择了默认语言以外的语言,则表单中的laguage_code字段的值仍然等于默认值。我试图在form_valid方法中更改此字段,但没有成功。表单仍然使用默认语言保存。对我来说唯一可行的办法是,从表面上看,这似乎是一种套话:
def form_valid(self, form):
language = translation.get_language()
_course = form.save(commit=False)
try:
course = Course.objects.get(pk=_course.id)
except Course.DoesNotExist:
course = Course()
course.owner = self.request.user
course.set_current_language(language)
cd = form.cleaned_data
course.subject = cd['subject']
course.title = cd['title']
course.slug = cd['slug']
course.overview = cd['overview']
course.save()
return redirect(reverse('courses:manage_list'))也许有人知道一种更优雅的方法来实现这一点?
发布于 2022-08-20 21:37:57
我希望您有一个基于类的Django FormView和ModelFormMixin
def form_valid(self, form):
self.obj = form.save() # you dont need it in UpdateView
return super().form_valid(form)顺便说一下。
Django-Parler或Django-HVAD已经是过时的项目了。您可以使用django-模型翻译。或者我的项目Django-TOF v.2。
当然django 2已经是一个非常古老的项目了。Django 4.1要好得多。
在我看来,最好的书关于Django - Django设计模式和最佳实践。最后一个版本。它比"2范围“或"Django 2按例”更像Django-ish -ish。
https://stackoverflow.com/questions/73428143
复制相似问题