2011-12-08 154 views
0

让我们假设我有以下几点:Django的抽象模型与M2M领域

class Base(Model): 
    m2m_1 = ManyToManyField("SomeModel1") 
    m2m_2 = ManyToManyField("SomeModel2") 

    class Meta: 
     abstract = True 

class A(Base): 
    def __init__(self): 
     super(A, self).__init__() 
    pass 

class B(Base): 
    def __init__(self): 
     super(B, self).__init__() 
    pass 

但是,我不能这样做,因为它需要对M2M领域相关的名称。然而,这并没有帮助,因为模型是抽象的,Django试图为A和B模型创建相同的相关名称。

任何想法如何分别指定每个模型的相关名称,甚至根本不使用它们?

回答

7

的答案是正确的docs for abstract classes(下题为节 “小心related_name”):

m2m = models.ManyToManyField(OtherModel, related_name="%(app_label)s_%(class)s_related")