I have created this code for defining a default everytime I create a new 
product, 

It is working fine and whenever I create a new Item a new variable (size) 
is create 

I want to check whether this code is correct or not as I have had help from 
someone and I think we could have created an easier way for it 


class Item(models.Model):
    title = models.CharField(max_length=100)
    price = models.DecimalField(decimal_places=2, max_digits=100)
    category = models.CharField(choices=CATEGORY_CHOICES, max_length=2)
    label = models.CharField(choices=LABEL_CHOICES, max_length=1)
    slug = models.SlugField(unique=True)
    timestamp = models.DateTimeField(default=timezone.now)
    active = models.BooleanField(default=True)

    def __str__(self):
        return self.title

class VariationManager(models.Manager):
    def all(self):
        return super(VariationManager, self).filter(active=True)

    def sizes(self):
        return self.all().filter(category='size')

    def colors(self):
        return self.all().filter(category='color')


VAR_CATEGORIES = (
    ('size', 'size',),
    ('color', 'color',),
    ('package', 'package'),
)


class Variation(models.Model):
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    category = models.CharField(
        max_length=120, choices=VAR_CATEGORIES, default='size')
    title = models.CharField(max_length=120)
    objects = VariationManager()
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)
    active = models.BooleanField(default=True)

    def __str__(self):
        return self.title

@receiver(post_save, sender=Item)
def add_default_Variant(sender, instance, **kwargs):
    small_size = Variation.objects.create(
        item=instance, category='size', title='Small')
    medium_size = Variation.objects.create(
        item=instance, category='size', title='Medium')
    large_size = Variation.objects.create(
        item=instance, category='size', title='Large')


@receiver(post_save, sender=Item)
def add_default_Variant(sender, instance, **kwargs):
    variant, created = Variation.objects.get_or_create(
        title="Small", item=instance)
    variant, created = Variation.objects.get_or_create(
        title="Medium", item=instance)
    variant, created = Variation.objects.get_or_create(
        title="Large", item=instance)
    print(f"default variant created : {variant}")

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/dea775b8-f39d-4da8-a539-fc0c10af1bcd%40googlegroups.com.

Reply via email to