Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Item(models.Model):
- name = models.CharField(max_length=120)
- price = models.DecimalField(max_digits=6, decimal_places=2)
- description = models.TextField(blank=True)
- rating = models.IntegerField(default=0, editable=False)
- images = models.ManyToManyField('Picture', related_name='item_images')
- def save(self, *args, **kwargs):
- if Review.objects.filter(item_id=self.id):
- self.rating = Review.objects.filter(item_id=self.id).aggregate(Avg('rating'))['rating__avg']
- super(Item, self).save(*args, **kwargs)
- class Review(models.Model):
- ratings = (
- (1, '1'),
- (2, '2'),
- (3, '3'),
- (4, '4'),
- (5, '5'),
- )
- user = models.ForeignKey(AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL)
- item = models.ForeignKey('items.Item', on_delete=models.CASCADE)
- text = models.TextField()
- rating = models.IntegerField(choices=ratings)
- def __str__(self):
- return 'Review #{} from {}'.format(self.id, self.user.username)
Advertisement
Add Comment
Please, Sign In to add comment