Давайте начнем с боттона, вот чего я хочу достичь
class ClassA(model.Models):
pass
class Class1(model.Models):
fieldX = models.CharField()
class Class2(Class1):
fieldY = models.BooleanField()
# all models are connected, and I prefere to have this situation
# I want to call related ClassA from both Class1 and Class2 using the
# same property
c1 = Class1()
c1.class_a
c2 = Class2()
c2.class_a
# and, at the same time, call both Class1 and Class2 from ClassA
a = ClassA()
a.class_1
a.class_2
Чтобы решить эту проблему, я дублирую код (и он мне не нравится):
class Class1(model.Models):
fieldX = models.CharField()
class Class2(model.Models):
fieldY = models.BooleanField()
fieldX = models.CharField()
class ClassA(models.Models):
class_1 = models.OneToOneField(Class1, reverse_name='class_a')
class_2 = models.OneToOneField(Class2, reverse_name='class_a')
Поля гораздо больше, чем это фиктивные примеры, и изменять их довольно раздражает.Как я могу это сделать?У меня много проблем с полями "reverse_name", чтобы добиться этого, есть ли обходной путь?