Проблема обратного имени наследования модели Django - PullRequest
0 голосов
/ 21 мая 2018

Давайте начнем с боттона, вот чего я хочу достичь

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", чтобы добиться этого, есть ли обходной путь?

...