Частично решил проблему просто переопределив в связующей таблице атрибутов и продуктов метод clean():
class ProductAttributeValue(models.Model):
...
def clean(self):
if self.attribute.category != self.product.category:
raise ValidationError("Product and attribute must have the same category!")
Однако хотелось бы делать это как-то динамично, то есть при выборе категории продукта в селекте атрибутов появлялись только атрибуты нужной категории.
Можно ли это реализовать средствами джанго или тут нужно что-то вроде джаваскрипта?