Coverage for shop/models.py: 87.10%

31 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-05-02 20:31 -0700

1from django.db import models 

2from django.urls import reverse 

3 

4 

5class Category(models.Model): 

6 name = models.CharField(max_length=200) 

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

8 

9 class Meta: 

10 ordering = ["name"] 

11 indexes = [ 

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

13 ] 

14 verbose_name = "category" 

15 verbose_name_plural = "categories" 

16 

17 def __str__(self): 

18 return self.name 

19 

20 def get_absolute_url(self): 

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

22 

23 

24class Product(models.Model): 

25 category = models.ForeignKey( 

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

27 ) 

28 name = models.CharField(max_length=200) 

29 slug = models.SlugField(max_length=200) 

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

31 description = models.TextField(blank=True) 

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

33 available = models.BooleanField(default=True) 

34 created = models.DateTimeField(auto_now_add=True) 

35 updated = models.DateTimeField(auto_now=True) 

36 

37 class Meta: 

38 ordering = ["name"] 

39 indexes = [ 

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

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

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

43 ] 

44 

45 def __str__(self): 

46 return self.name 

47 

48 def get_absolute_url(self): 

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