Отображение дочернего запроса в админ-панели Django
У меня есть различные вариации в модели атрибутов с помощью tabularinline:
class Attribute(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=250, unique=True)
description = models.TextField(null=True, blank=True)
def __str__(self):
return self.title
class Variations(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=250, unique=True)
description = models.TextField(null=True, blank=True)
image = models.ImageField(upload_to='variations', null=True, blank=True)
attribute = models.ForeignKey(Attribute, null=True, on_delete=models.SET_NULL, related_name='variation')
def __str__(self):
return self.title
Теперь я создал отношение Модель продукта с атрибутами:
class Product(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=250, unique=True)
description = RichTextUploadingField(null=True)
short_description = RichTextUploadingField(null=True)
regular_price = models.IntegerField()
sale_price = models.IntegerField(null=True, blank=True)
sku = models.CharField(max_length=200, null=True, blank=True)
dimenstions = models.CharField(max_length=200, null=True, blank=True)
stock_quantity = models.IntegerField(default=0)
category = models.ManyToManyField(Category, related_name='category')
tag = models.ManyToManyField(Tags, related_name='tag')
attributes = models.ManyToManyField(Attribute, through='ProductVariation', related_name='products')
image = models.ImageField(upload_to='shop/image', null=True, blank=True)
# tax_class = pass
# shiping_class = pass
# related_product = pass
# variation = pass
def __str__(self):
return self.title
def thumbnail_tag(self):
return format_html(
"<img width=100 height=75 style='border-radius: 5px;' src='{}'>".format(self.image.url))
thumbnail_tag.short_description = "Thumbnail"
class ProductVariation(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
attribute = models.ForeignKey(Attribute, on_delete=models.CASCADE)
def __str__(self):
return f"{self.product} - {self.attribute_value}"
Теперь я хочу, чтобы, когда пользователи выбирают атрибут 1, показать им в другом поле все вариации этого атрибута и сделать это для разных атрибутов с разными вариациями. Например, когда я хочу добавить новый продукт в админ-панели, если я выбираю атрибут цвета, покажите мне другое поле цвета, который я имею в этом атрибуте