I have three models in my django project. I want only those products to show up in django admin in product field of variation_price model for which variations already exist. How can I achieve that?
In models.py:
class VariationManager(models.Manager):
def color(self):
return super(VariationManager,self).filter(variation_category='color', is_active=True)
def sizes(self):
return super(VariationManager, self).filter(variation_category='size', is_active=True)
variation_category_choice = (
('color', 'color'),
('size', 'size'),
)
class Variation(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
variation_category = models.CharField(max_length=100, choices=variation_category_choice)
variation_value = models.CharField(max_length=100)
objects = VariationManager()
class variation_price(models.Model):
price = models.IntegerField()
product = models.ForeignKey(Product, on_delete=models.CASCADE)
variations = models.ManyToManyField(Variation, blank=True)
is_active = models.BooleanField(default=True)
Thanks
You can filter with limit_choices_to=…
[Django-doc]:
class variation_price(models.Model):
price = models.IntegerField()
product = models.ForeignKey(
Product,
limit_choices_to={'variation__isnull': False},
on_delete=models.CASCADE,
)
variations = models.ManyToManyField(Variation, blank=True)
is_active = models.BooleanField(default=True)