Я создал метод в своих моделях, который проверяет баланс запасов для моего приложения для веб-магазина.Django: объект 'Manager' не имеет атрибута 'get_quantity_sum'
models.py:
class ProductVariantSize(models.Model):
product_variant = models.ForeignKey('ProductVariant', related_name='sizes')
size = models.ForeignKey('Size')
available_qty = models.IntegerField(default=0)
def __unicode__(self):
return u'%s %d kom' % (lang.resolve_dict(self.size.name), self.available_qty)
def stock_check(self):
from webshop.models import OrderDetail
sold_sum = OrderDetail.objects.filter(
variant=self.product_variant, size = self.size).aggregate(
total_quantity=Sum('quantity'))['total_quantity']
receipt_sum = ReceiptDetail.objects.filter(
variant=self.product_variant, size = self.size).aggregate(
total_quantity=Sum('quantity'))['total_quantity']
bill_of_lading_sum = BillOfLadingDetail.objects.filter(
variant=self.product_variant, size = self.size).aggregate(
total_quantity=Sum('quantity'))['total_quantity']
stock_return_sum = StockReturnDetail.objects.filter(
variant=self.product_variant, size = self.size).aggregate(
total_quantity=Sum('quantity'))['total_quantity']
total_sum = receipt_sum - sold_sum - bill_of_lading_sum - stock_return_sum
if self.available_qty != total_sum:
return False
return True
Как вы можете видеть мои QuerySet фильтры все равно. Я хочу использовать django custom manager здесь, но я не могу заставить его работать. Вот что я пытался:
class SumManager(models.Manager):
def get_quantity_sum(self):
qs = self.get_queryset()
return qs.filter(
variant=self.product_variant, size = self.size).aggregate(
total_quantity=Sum('quantity'))['total_quantity']
class ProductVariantSize(models.Model):
product_variant = models.ForeignKey('ProductVariant', related_name='sizes')
size = models.ForeignKey('Size')
available_qty = models.IntegerField(default=0)
objects = SumManager()
def __unicode__(self):
return u'%s %d kom' % (lang.resolve_dict(self.size.name), self.available_qty)
def stock_check(self):
from webshop.models import OrderDetail
sold_sum = OrderDetail.objects.get_quantity_sum()
receipt_sum = ReceiptDetail.objects.get_quantity_sum()
bill_of_lading_sum = BillOfLadingDetail.objects.get_quantity_sum()
stock_return_sum = StockReturnDetail.objects.get_quantity_sum()
total_sum = receipt_sum - sold_sum - bill_of_lading_sum - stock_return_sum
if self.available_qty != total_sum:
return False
return True
я получаю следующее сообщение об ошибке:
'Manager' object has no attribute 'get_quantity_sum'
сообщение об ошибке довольно ясно, что это не ?: У вас нет менеджера в месте, которое вы хотите использовать. Вам нужно назначить его. –