Django 模型父级的自定义相关名称 link?
Custom related name for a Django model parent link?
我正在处理一个需要可扩展的 Django 项目。因此,为此我在核心应用程序和各种模板方法中创建了一系列基本模型(一些抽象的,一些不是),以便可以轻松地为项目开发新的插件应用程序。
问题是,我有几个不同的插件应用程序,它们包含来自核心应用程序的同名模型和相同的 superclass。我觉得这些模型只适用于少数具有完全不同的独立实现的应用程序,在核心应用程序中有一个通用的 class 真的没有意义。
核心应用:
class MyBaseClass(models.Model):
"""
This is the base class.
"""
pass
插件应用 1:
class MySubclass(MyBaseClass):
"""
Some subclass.
"""
pass
插件应用 2:
class MySubclass(MyBaseClass):
"""
Some other subclass.
"""
pass
这不起作用,因为在为父 link 创建的相关名称中存在冲突,据我所知,这只是 ModelBase 元 class 创建的 OneToOneField。我觉得只要在相关名称中包含应用程序的名称就可以避免这种情况,但我不知道是否有实用的方法可以做到这一点。
由于这些插件应用程序将由不同的人创建,我觉得我应该处理 class 名称冲突,特别是因为我认为它们不太可能发生。
有没有办法为父 link 字段指定相关名称?还有其他想法吗?
您可以在子类中明确指定父类 link:
class MySubclass(MyBaseClass):
mybaseclass = models.OneToOneField(MyBaseClass, parent_link=True, related_name='thissubclass')
我正在处理一个需要可扩展的 Django 项目。因此,为此我在核心应用程序和各种模板方法中创建了一系列基本模型(一些抽象的,一些不是),以便可以轻松地为项目开发新的插件应用程序。
问题是,我有几个不同的插件应用程序,它们包含来自核心应用程序的同名模型和相同的 superclass。我觉得这些模型只适用于少数具有完全不同的独立实现的应用程序,在核心应用程序中有一个通用的 class 真的没有意义。
核心应用:
class MyBaseClass(models.Model):
"""
This is the base class.
"""
pass
插件应用 1:
class MySubclass(MyBaseClass):
"""
Some subclass.
"""
pass
插件应用 2:
class MySubclass(MyBaseClass):
"""
Some other subclass.
"""
pass
这不起作用,因为在为父 link 创建的相关名称中存在冲突,据我所知,这只是 ModelBase 元 class 创建的 OneToOneField。我觉得只要在相关名称中包含应用程序的名称就可以避免这种情况,但我不知道是否有实用的方法可以做到这一点。
由于这些插件应用程序将由不同的人创建,我觉得我应该处理 class 名称冲突,特别是因为我认为它们不太可能发生。
有没有办法为父 link 字段指定相关名称?还有其他想法吗?
您可以在子类中明确指定父类 link:
class MySubclass(MyBaseClass):
mybaseclass = models.OneToOneField(MyBaseClass, parent_link=True, related_name='thissubclass')