在Django中使用继承模型获取相关对象的主键

时间:2011-12-07 21:09:18

标签: django inheritance models

我有以下型号:

class A(TranslatableModel):
    translations = TranslatedFields(
        name = models.CharField(max_length=30)
    )
    f = IntegerField()

class B(A):
    def __init__(self, *args, **kwargs):
        super(B, self).__init__(*args, **kwargs)

    some_field = ...

然后我创建了一个B实例,我相信它创建了A的实例。

b = B.objects.create(some_field='aaa', f=15)

我现在如何访问与A对象相关的模型b的对象?有没有办法从B获得A的PK?

2 个答案:

答案 0 :(得分:2)

b有两个属性,

b.a_ptrb.a_ptr_id

答案 1 :(得分:1)

如果在B上使用parent_link = True指定OneToOneField,则可以控制名称。例如:

class A(TranslatableModel):
    translations = TranslatedFields(
        name = models.CharField(max_length=30)
    )
    f = IntegerField()

class B(A):
    link_back_to_A = OneToOneField(A, parent_link=True) # specify the name
    some_field = ...

请参阅:https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.OneToOneField