Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.db import models
- from django.db.models import Avg
- from django.contrib.auth.models import User
- from django.urls import reverse
- from django.utils import timezone
- class Accelerator(models.Model):
- name = models.CharField(max_length=100)
- website = models.CharField(max_length=100)
- locations = models.CharField(max_length=100)
- bio = models.TextField()
- sector_focus = models.CharField(max_length=100)
- stage = models.CharField(max_length=100)
- deal = models.CharField(max_length=200)
- duration = models.CharField(max_length=100)
- overall_rating = models.DecimalField(decimal_places=2, max_digits=3)
- author = models.ForeignKey(User, on_delete=models.CASCADE, default='admin')
- logo = models.ImageField(default='default.jpg', upload_to='logos')
- def __str__(self):
- return self.name
- # Function to configure correct URL once new model instance has been created
- def get_absolute_url(self):
- return reverse('accelerator_detail', kwargs={'pk': self.pk})
- @property
- def save(self):
- acc_reviews = Review.objects.filter(subject=self.name)
- if len(acc_reviews) > 0:
- self.overall_rating = acc_reviews.aggregate(Avg('overall'))
- else:
- self.overall_rating = 0
- super(Accelerator, self).save()
- class Review(models.Model):
- RATINGS = (
- ('1', '1'),
- ('2', '2'),
- ('3', '3'),
- ('4', '4'),
- ('5', '5'),
- )
- subject = models.ForeignKey(Accelerator, on_delete=models.CASCADE, blank=False)
- author = models.ForeignKey(User, on_delete=models.CASCADE, blank=False, default='admin')
- feedback = models.TextField(blank=False)
- date_posted = models.DateTimeField(default=timezone.now)
- mentorship = models.CharField(choices=RATINGS, blank=False, max_length=1)
- hiring = models.CharField(choices=RATINGS, blank=False, max_length=1)
- community = models.CharField(choices=RATINGS, blank=False, max_length=1)
- fundraising = models.CharField(choices=RATINGS, blank=False, max_length=1)
- corporate_dev = models.CharField(choices=RATINGS, blank=False, max_length=1)
- overall = models.DecimalField(decimal_places=2, max_digits=3)
- def __str__(self):
- return self.subject
- def get_absolute_url(self):
- return reverse('review_detail', kwargs={'pk': self.pk})
- def save(self, *args, **kwargs):
- # set the overall field when the model is saved
- self.overall = self.mentorship + self.hiring + self.community + \
- self.fundraising + self.corporate_dev / 5
- super(Review, self).save(*args, **kwargs)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement