Две модели имеют внешний ключ к третьей модели - могу ли я сделать инлайн на основе этого внешнего ключа?
При разработке панели администратора 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, который, я уверен, можно использовать для создания инлайнов - вопрос в том, как я могу это сделать?