Немного странно отвечать на ваш собственный вопрос, но эй больше никто не подошел. И спасибо Бернду за то, что он указал мне правильное направление. Решение требует создания посреднической модели. Класс BC в моем случае.
class A(models.Model):
a = models.IntegerField()
class B(models.Model):
fb = models.ForeignKey(A)
b = models.IntegerField()
class C(models.Model):
fc = models.ForeignKey(B)
c = models.IntegerField()
class BC(models.Model):
fc = models.ForeignKey(A)
fb = models.ForeignKey(B)
И вместо того, чтобы иметь InlineB в Admin модели A, используйте inline BC. Так выглядит полный admin.py.
class InlineC(admin.TabularInline):
model = C
extra = 1
class BCInline(admin.TabularInline):
model = BC
extra = 1
class AdminA(admin.ModelAdmin):
fieldsets = [
(None, {
'fields': ('a',)
}),
]
inlines = [BCInline]
class AdminB(admin.ModelAdmin):
fieldsets = [
(None, {
'fields': ('b',)
}),
]
inlines = [InlineC]
И вуаля, я получаю кнопку для popus для создания полного объекта B, на странице добавления модели A.