一天来我一直在为这事头疼。在
我使用django模型翻译来翻译类似博客的帖子。一切都很好,除了我还尝试根据本文自动翻译标题中的slugs:https://raphaelbeck.wordpress.com/2011/04/16/how-to-translate-slug-with-django-modeltranslation/
只有翻译后的slug不会被翻译保存到数据库中。在
class Item(models.Model):
category = models.ForeignKey(
'help.category',
on_delete=models.PROTECT,
related_name='categories')
title = models.CharField(_('Titel'),max_length=255)
description = RichTextField(_('Omschrijving'))
slug = AutoSlugField(_('slug'), populate_from='title', overwrite=True)
class Meta:
verbose_name = _(u"Item")
verbose_name_plural = _(u"Items")
#automatically creating slugs for translations
def save(self, *args, **kwargs):
for lang_code, lang_verbose in settings.LANGUAGES:
if hasattr(self, 'slug_%s' % lang_code) and hasattr(self, 'title_%s' % lang_code):
setattr(self, 'slug_%s' % lang_code, slugify(getattr(self, 'title_%s' % lang_code, u"")))
print(self.slug_nl)
print(self.slug_en)
print(self.slug_nl)
print(self.slug_en)
super().save(*args, **kwargs)
def __str__(self):
return str(self.title)
我添加了一些打印功能来看看实际发生了什么。控制台日志如预期:
荷兰蛞蝓
没有
荷兰蛞蝓
英式鼻涕虫
荷兰蛞蝓
英式鼻涕虫
->slug_en根据控制台中的标题正确翻译,但在数据库中,荷兰语slug被保存。在
提前谢谢!任何想法都非常感谢。在
django模型转换和
AutoSlugField
在save()
方法中执行它们需要执行的操作,因此在保存之前所做的操作稍后会被覆盖。在除了在保存后添加翻译之外,没有其他方法,即使这意味着要保存模型两次。另外,您不能在post\u save中调用
save()
,否则将创建一个无休止的递归。在查询集上使用update()
。编写post_save
信号处理程序:相关问题 更多 >
编程相关推荐