Coverage for shop/models.py: 87.10%

31 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-10-11 10:36 -0700

1from django.db import models 1a

2from django.urls import reverse 1a

3 

4 

5class Category(models.Model): 1a

6 name = models.CharField(max_length=200) 1a

7 slug = models.SlugField(max_length=200, unique=True) 1a

8 

9 class Meta: 1a

10 ordering = ["name"] 1a

11 indexes = [ 1a

12 models.Index(fields=["name"]), 

13 ] 

14 verbose_name = "category" 1a

15 verbose_name_plural = "categories" 1a

16 

17 def __str__(self): 1a

18 return self.name 

19 

20 def get_absolute_url(self): 1a

21 return reverse("shop:product_list_by_category", args=[self.slug]) 

22 

23 

24class Product(models.Model): 1a

25 category = models.ForeignKey( 1a

26 Category, related_name="products", on_delete=models.CASCADE 

27 ) 

28 name = models.CharField(max_length=200) 1a

29 slug = models.SlugField(max_length=200) 1a

30 image = models.ImageField(upload_to="products/%Y/%m/%d", blank=True) 1a

31 description = models.TextField(blank=True) 1a

32 price = models.DecimalField(max_digits=10, decimal_places=2) 1a

33 available = models.BooleanField(default=True) 1a

34 created = models.DateTimeField(auto_now_add=True) 1a

35 updated = models.DateTimeField(auto_now=True) 1a

36 

37 class Meta: 1a

38 ordering = ["name"] 1a

39 indexes = [ 1a

40 models.Index(fields=["id", "slug"]), 

41 models.Index(fields=["name"]), 

42 models.Index(fields=["-created"]), 

43 ] 

44 

45 def __str__(self): 1a

46 return self.name 

47 

48 def get_absolute_url(self): 1a

49 return reverse("shop:product_detail", args=[self.id, self.slug])