ManyToMany с помощью: ForeignKey не отображается в админке

У меня есть ManyToManyField, использующий through:

class Entity(models.Model):
    relationships = models.ManyToManyField('self', through='ThroughRelationship', blank=True)
        
class ThroughRelationship(models.Model):
    entity = models.ForeignKey(Entity, on_delete=models.CASCADE)
    name = models.CharField()

Я добавляю его в админку следующим образом:

class ThroughRelationshipInline(admin.TabularInline):
    model = ThroughRelationship
    extra = 3

@admin.register(Entity)
class EntityAdmin(admin.ModelAdmin):
    inlines = [ThroughRelationshipInline]

Однако в панели администратора отображается только поле name, я не могу выбрать entity. Как это можно исправить?

Значение ThroughRelationShip не имеет особого смысла. Даже если у вас есть ManyToManyField для одной и той же модели, это должно подразумевать два ForeignKey , поскольку ThroughRelationShip по сути является "таблицей соединений" , которая связывает две сущности вместе, таким образом:

class Entity(models.Model):
    relationships = models.ManyToManyField('self', through='ThroughRelationship', blank=True)
        
class ThroughRelationship(models.Model):
    entity_from = models.ForeignKey(Entity, on_delete=models.CASCADE, related_name='relations_by_from')
    entity_to = models.ForeignKey(Entity, on_delete=models.CASCADE, related_name='relations_by_to')
    name = models.CharField()

а затем работайте с:

class ThroughRelationshipInline(admin.TabularInline):
    model = ThroughRelationship
    extra = 3
    fk_name = 'entity_from'

@admin.register(Entity)
class EntityAdmin(admin.ModelAdmin):
    inlines = [ThroughRelationshipInline]

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