Django - Как использовать метод модели в представлении на основе функций - PullRequest
0 голосов
/ 30 января 2020

Я создал функцию, которая суммирует все суммы в модели.

Как я могу выполнить эту функцию (get_tot_order_price) в представлении на основе функций (FBV)?

def myview (request ): ???

class Cart(TimeStampedModel, models.Model):

    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                         on_delete=models.CASCADE)
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=1)
    paid = models.BooleanField(default=False)


    def get_price(self):
        return self.product.price * self.quantity


class BillingItem(models.Model):

    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                         on_delete=models.PROTECT)
    products = models.ManyToManyField(Cart)
    quantity = models.PositiveIntegerField()

    def __str__(self):
        return '{}'.format(self.id)

    def get_tot_order_price(self):
        total = 0
        for price in self.products.all():
            total += price.get_price()

        return total

1 Ответ

1 голос
/ 30 января 2020

Итак, get_tot_order_price - это метод экземпляра. Это означает, что для выполнения этой функции вам необходим экземпляр модели BillingItem. В FBV вы можете получить экземпляр и выполнить этот метод.

def myview(request):
    obj = BillingItem.objects.get(id=some_id)
    total_price = obj.get_tot_order_price()

Это даст total_price для данного экземпляра BillingItem модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...