Я создаю django проектов, используя средний блог, я не могу понять цель этих трех строк кода - PullRequest
1 голос
/ 29 мая 2020

это приложение является менеджером заказов, и я новичок в django, поэтому я не знаю, что делает эта строка кода, поэтому, пожалуйста, помогите мне понять, для чего этот фрагмент кода используется для

objects = models.Manager()
browser = ProductManager()
tag_final_value.short_description = 'Value'

это мой файл models.py

class Product(models.Model):
    title = models.CharField(max_length=150, unique=True)
    category = models.ForeignKey(Category, null=True, on_delete=models.SET_NULL)
    active = models.BooleanField(default=True)
    value = models.DecimalField(default=0.00, decimal_places=2, max_digits=10)
    discount_value = models.DecimalField(default=0.00, decimal_places=2, max_digits=10)
    final_value = models.DecimalField(default=0.00, decimal_places=2, max_digits=10)
    qty = models.PositiveIntegerField(default=0)

    objects = models.Manager()
    browser = ProductManager()

    class Meta:
        verbose_name_plural = 'Products'

    def save(self, *args, **kwargs):
        self.final_value = self.discount_value if self.discount_value > 0 else self.value
        super().save(*args, **kwargs)

    def __str__(self):
        return self.title

    def tag_final_value(self):
        return f'{CURRENCY} {self.final_value}'
    tag_final_value.short_description = 'Value'

это мой файл manager.py

from django.db import models


class ProductManager(models.Manager):

    def active(self):
        return self.filter(active=True)

    def have_qty(self):
        return self.active().filter(qty__gte=1)

1 Ответ

0 голосов
/ 29 мая 2020

objects - это ваша default manager Вы можете получить все объекты в конкретной модели, используя products = Products.objects.all() browser - это ваша пользовательская модель, созданная с помощью класса ProductManager. Вы можете получить все объекты с помощью этого менеджера, используя products = Products.browser.all()

В основном, определяя настраиваемый менеджер, вы можете сузить свой набор запросов с помощью некоторых методов, которые вы хотели бы добавить. Таким образом, вам не нужно постоянно использовать пользовательские фильтры и другой сложный набор запросов, вы можете просто позвонить своему настраиваемому менеджеру

Подробнее здесь.

...