mirror of
https://github.com/tjsga/studyguides.git
synced 2025-04-10 14:20:16 -04:00
44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
from django.db import models
|
|
from django.core.validators import RegexValidator, FileExtensionValidator
|
|
|
|
|
|
class Subject(models.Model):
|
|
id = models.AutoField(primary_key=True)
|
|
name = models.CharField(max_length=100, unique=True)
|
|
url = models.CharField("URL", max_length=20, unique=True, validators=[RegexValidator(
|
|
regex="^[a-zA-Z0-9_\-]+$", message="Only alphanumeric, dashes, and underscores allowed")])
|
|
|
|
courses = models.ManyToManyField("Course", related_name="subject")
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
|
|
class Course(models.Model):
|
|
id = models.AutoField(primary_key=True)
|
|
name = models.CharField(max_length=100, unique=True)
|
|
url = models.CharField("URL", max_length=20, unique=True, validators=[RegexValidator(
|
|
regex="^[a-zA-Z0-9_\-]+$", message="Only alphanumeric, dashes, and underscores allowed")])
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
|
|
class Guide(models.Model):
|
|
id = models.AutoField(primary_key=True)
|
|
name = models.CharField(max_length=100)
|
|
|
|
tags = models.ManyToManyField("Tag", related_name="guide")
|
|
course = models.ForeignKey(Course, on_delete=models.CASCADE, null=True)
|
|
url = models.URLField(max_length=300)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Tag(models.Model):
|
|
id = models.AutoField(primary_key=True)
|
|
name = models.SlugField(max_length=100, unique=True, validators=[RegexValidator(
|
|
regex="^[a-z0-9_\-]+$", message="Only lowercase alphanumeric, dashes, and underscores allowed")])
|
|
|
|
def __str__(self):
|
|
return self.name |