Имеем Товары, Категории товаров, для каждой категории товаров заданы свои свойства. В Django админке при редактировании товара в inlines задаем значения для каджого свойства товара. Как отфильтровать список свойств товара в inlines dropdown по выбранной в товаре категории?
models.py
class Product(OrderingBaseModel):
name = models.CharField(
_("Name"),
default="",
max_length=250,
)
category = TreeForeignKey(
"Category",
on_delete=models.SET_NULL,
related_name="categories",
blank=True,
null=True,
verbose_name=_("Category"),
)
...
class Category(MPTTModel, OrderingBaseModel):
name = models.CharField(
_("Name"),
default="",
max_length=250,
)
...
class CategoryProperty(models.Model):
name = models.CharField(
_("Name"),
default="",
max_length=50,
)
category = models.ForeignKey(
"Category",
on_delete=models.CASCADE,
related_name="categories_property",
verbose_name=_("Category"),
)
...
class ProductProperty(models.Model):
product = models.ForeignKey(
"Product",
on_delete=models.CASCADE,
related_name = "properties_product",
verbose_name = _("Product"),
)
category_property = models.ForeignKey(
"CategoryProperty",
on_delete=models.CASCADE,
related_name = "category_property",
verbose_name = _("Property"),
)
value = models.CharField(
_("Value"),
default = "",
max_length = 10,
)
...
В admin.py
class ProductPropertyInlineForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ProductPropertyInlineForm, self).__init__(*args, **kwargs)
self.fields["category_property"].queryset = CategoryProperty.objects.filter(category__id =??? Что тут прописать ???)
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
inlines = [ProductPropertyInline,]
...
Updated 22 July 2018, 14:17 by v9k.