Фильтровать по категориям подкатегории, принадлежащие к одной категории разных товаров в админзоне django

Я хочу, чтобы при добавлении товаров в админке django, когда я ввожу категорию товара, перечислялись только подкатегории, принадлежащие только этой категории.

Вот мои модели

class Category(models.Model):
category_name  = models.CharField(max_length=50)
slug           = models.SlugField(max_length=100, unique=True)
category_image      = models.ImageField(upload_to = 'photos/categories', blank = True)
created_at     = models.DateTimeField(auto_now_add=True)




    class Sub_Category(models.Model):
        category           = models.ForeignKey(Category, on_delete=models.CASCADE)
        sub_category_name  = models.CharField(max_length=50)
        slug               = models.SlugField(max_length=100, unique=True)

В моей админке я хочу, чтобы подкатегория фильтровалась от категории при добавлении различных товаров..... Например, показывая скажем Мебель (категория) показывать стулья, кровати (подкатегории)

class Product(models.Model):
    category         = models.ForeignKey(Category, on_delete=models.CASCADE)
    sub_category     = models.ForeignKey(Sub_Category, on_delete=models.CASCADE)
    product_name     = models.CharField(max_length = 200, unique=True)
    slug             = models.SlugField(max_length=200,  blank=True)
    description      = models.TextField(max_length = 1000)
    price            = models.IntegerField()
    discount_price   = models.IntegerField(blank=True)
    on_offer         = models.BooleanField(default=False)

Никогда не пользовался админкой, так как мне нравится делать некоторые вещи самостоятельно, поэтому это не будет полным ответом, но это может помочь вам в правильном направлении и, возможно, кто-то другой покажет вам, как это относится к админке сайта django.

Способ достижения такого рода функциональности в целом заключается в использовании Javascript для получения подкатегорий на основе выбранной категории через триггер события. Другого способа нет, потому что именно так работает веб в браузере, вы посылаете запрос и получаете ответ, каждый раз туда и обратно. Если вы передаете категории и подкатегории в форму автоматически, если вы используете forms.ModelForm, то вы можете создать представление, которое обслуживает подкатегории на основе категории, если вы посылаете PK на его URL и фильтруете по нему, а затем делаете функцию Javascript для получения этого динамически (без необходимости обновлять страницу или делать новый запрос), возможно также сделать выпадающий список подкатегорий скрытым или отключенным, пока не выбрана категория, и когда вы получили ответ и заменили содержимое выпадающего списка подкатегорий, сделать его включенным или видимым.

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