Фильтровать по категориям подкатегории, принадлежащие к одной категории разных товаров в админзоне 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 для получения этого динамически (без необходимости обновлять страницу или делать новый запрос), возможно также сделать выпадающий список подкатегорий скрытым или отключенным, пока не выбрана категория, и когда вы получили ответ и заменили содержимое выпадающего списка подкатегорий, сделать его включенным или видимым.