foreign key dynamic filter with another foreign key in admin.py in django

Viewed 19

I have a problem with the dynamic design of the admin.

I want the selected productCategory to be dynamically filtered when I select the productType.

For example, I do this manually in models.py (ProductCategory.objects.filter(productType=2 or 1 or 4 ...( i cant dynamic)) enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here

models.py

class ProductType(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField(max_length=200, unique=True)

class ProductCategory(models.Model):
    productType = models.ForeignKey(ProductType, on_delete=models.CASCADE)
    name = models.CharField(max_length=200)
    slug = models.SlugField(max_length=200, unique=True)

class Product(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    brand = models.ForeignKey(Brand, on_delete=models.CASCADE)
    productType = models.ForeignKey(ProductType, on_delete=models.CASCADE, default=1)
    productCategory = models.ForeignKey(ProductCategory, on_delete=models.CASCADE)

enter code here

admin.py

class ProductForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(ProductForm, self).__init__(*args, **kwargs)
        if self.instance:
            self.fields['productCategory'].queryset = ProductCategory.objects.filter(productType=self.instance.productType.id)


@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    form = ProductForm
0 Answers
Related