django-project/recipes/models.py
2023-03-19 19:12:57 +01:00

35 lines
1.3 KiB
Python

from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse
class Recipe(models.Model):
title = models.CharField(max_length=100, null=False, blank=False)
slug = models.SlugField(unique=True)
def __str__(self) -> str:
return self.title
def get_absolute_url(self):
return reverse('recipe', kwargs={'slug': self.slug})
class Version(models.Model):
label = models.CharField(max_length=20, default='Original')
slug = models.SlugField(max_length=20, default='original')
body = models.TextField(null=True, blank=True)
user = models.ForeignKey(User, on_delete=models.PROTECT, null=False, blank=False)
author = models.CharField(max_length=30, blank=True)
recipe = models.ForeignKey(Recipe, on_delete=models.PROTECT, null=False, blank=False, related_name='versions')
def __str__(self) -> str:
return self.recipe.title + ' - ' + self.label
def get_absolute_url(self):
return reverse('version', kwargs={'slug_recipe': self.recipe.slug, 'slug_version': self.slug})
class Ingredient(models.Model):
text = models.CharField(max_length=50, null=False, blank=False)
version = models.ForeignKey(Version, on_delete=models.CASCADE, null=False, blank=False, related_name='ingredients')
def __str__(self) -> str:
return self.text + ' for ' + str(self.version)