You have yor models defined like this:
class Category(models.Model):
...
class Hero(models.Model):
category = models.ForeignKey(Catgeory)
...
class HeroAcquaintance(models.Model):
hero = models.OneToOneField(Hero, on_delete=models.CASCADE)
...
You want to have one admin page to create
Category, Hero and HeroAcquaintance objects. However, Django doesn’t support nested inline with Foreign Keys or One To One relations which span more than one levels. You have a few options,
You can change the
HeroAcquaintance model, so that it has a direct FK to Category, something like this:class HeroAcquaintance(models.Model):
hero = models.OneToOneField(Hero, on_delete=models.CASCADE)
category = models.ForeignKey(Category)
def save(self, *args, **kwargs):
self.category = self.hero.category
super().save(*args, **kwargs)
Then you can attach
HeroAcquaintanceInline to CategoryAdmin, and get a kind of nested inline.
Alternatively, there are a few third party Django apps which allow nested inline. A quick Github or DjangoPackages search will find one which suits your needs and tastes.
No comments:
Post a Comment