从 META class 动态创建 related_name
Dynamically creating the related_name from META class
我的大部分 Django 模型都使用相同的 User Mixin,因此我想为该字段动态创建 related_name
。
我希望它是 class 名称,其中 TestModel
变为 test_models
或者甚至是主模型上元 class 的集合名称。
我查看了 self__class__.__name__
,但这给了我用户名 class。
是否可以像下面那样做,如果可以的话……
class User(models.Model):
user = models.ForeignKey(USER, related_name=META.related_name)
class Meta:
abstract = True
class TestModel(User):
title = models.CharField(max_length=80)
class Meta:
related_name = "test_model"
我认为这样处理就足够了 documented here。
# myapp/models.py
class User(models.Model):
user = models.ForeignKey(
USER,
related_name="%(app_label)s_%(class)s_related"
)
class Meta:
abstract = True
class TestModel(User):
title = models.CharField(max_length=80)
这样相关的名字就会动态变成myapp_testmodel_related
。当然你可以调整名称并简化模式,如果确定名称不会在多个应用程序之间发生冲突。
我的大部分 Django 模型都使用相同的 User Mixin,因此我想为该字段动态创建 related_name
。
我希望它是 class 名称,其中 TestModel
变为 test_models
或者甚至是主模型上元 class 的集合名称。
我查看了 self__class__.__name__
,但这给了我用户名 class。
是否可以像下面那样做,如果可以的话……
class User(models.Model):
user = models.ForeignKey(USER, related_name=META.related_name)
class Meta:
abstract = True
class TestModel(User):
title = models.CharField(max_length=80)
class Meta:
related_name = "test_model"
我认为这样处理就足够了 documented here。
# myapp/models.py
class User(models.Model):
user = models.ForeignKey(
USER,
related_name="%(app_label)s_%(class)s_related"
)
class Meta:
abstract = True
class TestModel(User):
title = models.CharField(max_length=80)
这样相关的名字就会动态变成myapp_testmodel_related
。当然你可以调整名称并简化模式,如果确定名称不会在多个应用程序之间发生冲突。