小编Jul*_*ien的帖子

django blocktrans和模板中的i18n

我在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)

我可以看到过滤器正在工作,但没有翻译......

django templates translation internationalization

10
推荐指数
4
解决办法
2万
查看次数

如何在Django中的多对多关系中使用add()时执行验证?

我有一个具有父/子自我关系的分类模型对于主要类别和子类别:

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)

因为未设置父级,或者不是正确的父类别

我在哪里可以为管理员进行表单验证?和其他形式(因为任何用户都可以添加新的地方,并且必须选择正确的类别)

django many-to-many

5
推荐指数
2
解决办法
2714
查看次数