Coverage for cheese/cheeses/models.py: 100.00%
23 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-16 16:36 -0700
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-16 16:36 -0700
1from autoslug import AutoSlugField
2from django.conf import settings
3from django.db import models
4from django.urls import reverse
5from django_countries.fields import CountryField
6from model_utils.models import TimeStampedModel
9class Cheese(TimeStampedModel):
10 class Firmness(models.TextChoices):
11 UNSPECIFIED = "unspecified", "Unspecified"
12 SOFT = "soft", "Soft"
13 SEMI_SOFT = "semi-soft", "Semi-Soft"
14 SEMI_HARD = "semi-hard", "Semi-Hard"
15 HARD = "hard", "Hard"
17 name = models.CharField("Name of Cheese", max_length=255)
18 slug = AutoSlugField(
19 "Cheese Address",
20 unique=True,
21 always_update=False,
22 populate_from="name",
23 )
24 description = models.TextField("Description", blank=True)
25 firmness = models.CharField(
26 "Firmness",
27 max_length=20,
28 choices=Firmness.choices,
29 default=Firmness.UNSPECIFIED,
30 )
31 country_of_origin = CountryField("Country of Origin", blank=True)
32 creator = models.ForeignKey(
33 settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL
34 )
36 def __str__(self):
37 return self.name 1b
39 def get_absolute_url(self):
40 """Return absolute URL to the Cheese Detail page."""
41 return reverse("cheeses:detail", kwargs={"slug": self.slug}) 1cde