An Inline class isnt working in django admin

I created a ProductAttributes model that have a ForeignKey from Product model now i'm trying to create an admin panel for adding product using django admin i'm adding ProductAttributes to Product admin with TabularInline but its not working

this the models and admin classes

class Product(models.Model):
    title = models.CharField(max_length=255)
    slug = models.SlugField()
    description = models.TextField(null=True, blank=True)
    introduction = models.TextField(null=True, blank=True)
    unit_price = models.DecimalField(
    inventory = models.IntegerField(validators=[MinValueValidator(0)])
    last_update = models.DateTimeField(auto_now=True)
    collection = models.ForeignKey(Collection, on_delete=models.PROTECT, related_name='products')
    promotions = models.ManyToManyField(Promotion, blank=True)

    def __str__(self) -> str:
        return self.title

    class Meta:
        ordering = ['title']

class ProductAttributes(models.Model):
    Product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name="attributes")
    attribute = models.CharField(max_length=255)


class ProductAttributesInline(admin.TabularInline):
    model = models.ProductAttributes

class ProductAdmin(admin.ModelAdmin):
    autocomplete_fields = ['collection']
    prepopulated_fields = {
        'slug': ['title']
    actions = ['clear_inventory']
    inlines = [ProductAttributesInline]
    list_display = ['title', 'unit_price',
                    'inventory_status', 'collection_title']
    list_editable = ['unit_price']
    list_filter = ['collection', 'last_update', InventoryFilter]
    list_per_page = 10
    list_select_related = ['collection']
    search_fields = ['title']

    def collection_title(self, product):
        return product.collection.title

    def inventory_status(self, product):
        if product.inventory < 10:
            return 'Low'
        return 'OK'

    @admin.action(description='Clear inventory')
    def clear_inventory(self, request, queryset):
        updated_count = queryset.update(inventory=0)
            f'{updated_count} products were successfully updated.',

    class Media:
        css = {
            'all': ['store/style.css']

the ProductAttributes isnt shown in Product admin

in the orginal project i created another inline for ProductImage and its working but when i try to delete that inline its not gone from product admin

Firstly, do not forget checking all migrations, and It would be more good to keep your models in and do not mix them with admin related changes. I would recommend you to write them in

You can use both images and attributes like that:

class ProductAttributesInlineAdmin(admin.TabularInline):
    model = ProductAttributes
    extra = 2

class ProductAdmin(admin.ModelAdmin):
    inlines = [ProductAttributesInlineAdmin, ProductImageInlineAdmin]

Back to Top