C4X*_*C4X 6 django inheritance querying plural
我有以下型号:
from django.db import models
from foo.bar.models import Location
class AbstractShop(models.Model):
location = models.ForeignKey(Location, on_delete=models.CASCADE, related_name="%(class)s")
class Meta(self):
abstract = True
class Bakery(AbstractShop):
some_field = models.BooleanField("Some field", default=True)
class Meta:
verbose_name = "Bakery"
verbose_name_plural = "Bakeries"
class Supermarket(AbstractShop):
some_other_field = models.CharField("Some other field", max_length=20)
class Meta:
verbose_name = "Supermarket"
verbose_name_plural = "Supermarkets"
Run Code Online (Sandbox Code Playgroud)
现在,Supermarket以及Bakery继承location-ForeignKey 从AbstractShop.
如果我想查询Bakery模型上的反向关系Location,我必须使用bakerys(而不是正确的bakeries) as related_name- 我不想要它,因为它在语法上是错误的且不直观。
所以我的问题是:
有什么办法可以使用verbose_name_pluralasrelated_name吗?
related_name除了"%(class)s"或者"%(app_label)s我只需要在子类上实现ForeignKey之外,还有什么方法可以使用吗?
如果是这样的话,那就有点烦人了。想象一下你有很多共享的外键:你可以将英语中具有规则复数的外键移至抽象基类(ABC)(因为对于规则名词,添加“s”会产生"%(class)s"正确的复数形式),而那些具有不规则复数形式的外键必须在子类上实现(因为只有在那里可以related_name设置为子类实际名称的复数,而你在 ABC 中不知道)。
这是一个完全任意的条件,对于非英语母语人士来说可能并不明显,而且它将语言逻辑转换为代码,恕我直言,这是不应该发生的。