我的大多数Django模型使用相同的User Mixin,因此我想为该字段动态创建related_name
。
我希望它是TestModel
成为test_models
的类名,或者甚至是主模型上元类的集名。
我查看了self__class__.__name__
,但这给了我User类的名称。
是否有可能像下面这样做,如果是这样......
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"
答案 0 :(得分:8)
我认为像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
。当然,如果确定名称不能在多个应用程序之间发生冲突,您可以调整名称并简化模式。