我在django有一个i18n问题:
这很好用:
{% trans cat.name %}
Run Code Online (Sandbox Code Playgroud)
cat.name
将被翻译
但这不起作用:
{% blocktrans with cat.name|slugify as cat_slug %}{{ cat_slug }}{% endblocktrans %}
Run Code Online (Sandbox Code Playgroud)
cat.name
没有翻译
如果我更改过滤器:
{% blocktrans with cat.name|capfirst as cat_slug %}{{ cat_slug }}{% endblocktrans %}
Run Code Online (Sandbox Code Playgroud)
我可以看到过滤器正在工作,但没有翻译......
我有一个具有父/子自我关系的分类模型对于主要类别和子类别:
class Place(models.Model):
name = models.CharField(_("name"), max_length=100)
categories = models.ManyToManyField("Category", verbose_name=_("categories"))
class Category(models.Model):
name = models.CharField(_("name"), max_length=100)
parent = models.ForeignKey('self', blank=True, null=True, related_name='child_set')
Run Code Online (Sandbox Code Playgroud)
我需要防止孤儿,以防止这种错误(在管理员网页界面)
c_parent = Category(name='Restaurant')
c_parent.save()
c_child = Category(name="Japanese restaurant", parent=c_parent)
c_child.save()
place1 = Place (name="Planet sushi")
place1.save()
place1.categories.add(c_parent)
place1.categories.add(c_child)
Run Code Online (Sandbox Code Playgroud)
所以现在我们有了一个名为"Planet sushi"的新地方,它是一个餐厅(根类别)和一个日本餐厅(子类别)
但我想阻止这种事情:
place2 = Place (name="Tokyofood")
place2.save()
place2.categories.add(c_child)
Run Code Online (Sandbox Code Playgroud)
因为未设置父级,或者不是正确的父类别
我在哪里可以为管理员进行表单验证?和其他形式(因为任何用户都可以添加新的地方,并且必须选择正确的类别)