Две модели имеют внешний ключ к третьей модели - могу ли я сделать инлайн на основе этого внешнего ключа?

При разработке панели администратора Django я недавно столкнулся со следующей ситуацией:

У меня есть три модели:

class A(models.Model):
    id_a = models.AutoField(primary_key=True)
    some_data = models.CharField(max_length=255, blank=True, null=True)
    id_c = models.ForeignKey('C', models.PROTECT, db_column='id_c')

class B(models.Model):
    id_b = models.AutoField(primary_key=True)
    some_data = models.CharField(max_length=255, blank=True, null=True)
    id_c = models.ForeignKey('C', models.PROTECT, db_column='id_c')

class C(models.Model):
    id_c = models.AutoField(primary_key=True)
    some_data = models.CharField(max_length=255, blank=True, null=True)

Как вы можете видеть, две из моделей имеют внешний ключ к третьей. Что мне нужно сделать, так это создать inline модели B в модели A. Это должно быть возможно, поскольку они имеют общий внешний ключ к модели C. (Итак, что я хочу: когда я смотрю на сущность модели A в панели администратора, у меня должны быть строки всех сущностей B, которые имеют тот же 'id_c', что и сущность A, на которую я смотрю)

Так что я попробовал вот так (в файле admin.py):

class InlineB(admin.StackedInline):
    model = B
    extra = 1

@admin.register(A)
class AdminPanel_A(SimpleHistoryAdmin):
    list_display = ['some_data']
    inlines = [InlineB]

Но когда я делаю это таким образом, я получаю ошибку:

B не имеет ForeignKey к A.

Что, конечно, верно, но у этих двух моделей есть общий ForeignKey, который, я уверен, можно использовать для создания инлайнов - вопрос в том, как я могу это сделать?

Вернуться на верх