RateMyCourse/backend/postings/models.py

47 lines
1.8 KiB
Python
Raw Normal View History

2018-09-16 16:52:23 +00:00
from django.db import models
# Represents any object for which reviews can be made. (Universities, Professors, etc.)
class RateableEntity(models.Model):
# The human-readable name of this entity.
name = models.CharField(max_length=256)
class Meta:
abstract = True
# A review represents any single data entry to the database.
class Review(models.Model):
# An integer rating in the domain [1, 5]
rating = models.IntegerField(default=1)
# The textual content of the review.
content = models.TextField()
# An integer representing the number of times a user found this review helpful.
helpful_vote_count = models.IntegerField(default=1)
# An integer representing the number of times a user found this review unhelpful.
unhelpful_vote_count = models.IntegerField(default=1)
# A foreign key referencing the entity for which this review was made.
rateable_entity_id = models.ForeignKey(RateableEntity, on_delete=models.CASCADE)
# A RateableEntity for universities.
class University(RateableEntity):
pass
# A RateableEntity for professors, who belong to one or more university.
class Professor(RateableEntity):
# The universities that this professor teaches or has taught at.
university = models.ManyToManyField(University)
# A RateableEntity for courses, which belong to a university, and have one or more professors.
class Course(RateableEntity):
# The university that this course belongs to.
university = models.ForeignKey(University, on_delete=models.CASCADE)
# A list of professors that teach this course.
professors = models.ManyToManyField(RateableEntity)
2018-09-16 16:52:23 +00:00
# Create your models here.
class UniversityReview(models.Model):
university_name = models.CharField(max_length=200)
username = models.CharField(max_length=200)
title = models.CharField(max_length=200)
date_published = models.DateTimeField('date published')
content = models.CharField(max_length=200)