0

这是我的模型和观点。我有 3 类用户,他们在每种产品上分别获得 30% + 5%、30% + 10% 和 20% + 5% 的固定折扣。有没有办法让我在不为模型中的每个用户硬编码价格的情况下做到这一点

from django.db import models
from django.core.urlresolvers import reverse

class Ancillary(models.Model):
    product_code = models.CharField(max_length=60, null=True)
    type = models.CharField(max_length=120, null=True)
    product = models.CharField(max_length=120, null=True)
    standard = models.CharField(max_length=120,   null=True)
    measurement = models.CharField(max_length=120,  null=True)
    brand = models.CharField(max_length=120,   null=True)
    price = models.Int(max_length=120,   null=True)

 class Meta:
      verbose_name_plural = "Ancillaries"
 def get_absolute_url(self):
      return reverse('ancillaries')
 def __unicode__(self):
      return u'%s %s %s %s %s %s  %s' % (self.id, self.product_code, self.type, 
                            self.product, self.standard, 
                            self.measurement, self.brand)


class AncillaryDetail(DetailView):
    model = Ancillary
    def get_context_data(self, **kwargs):

        context = super(AncillaryDetail, self).get_context_data(**kwargs)
        context['Ancillary_list'] = Ancillary.objects.all()
        return context   
4

1 回答 1

0

我会添加一个方法来Ancillary返回给定用户的折扣价。然后,您可以从您的视图中调用它,并传入登录的User.

class Ancillary(models.Model):
    ...
    def get_discounted_price(self, user):
        # check type of user and return discounted price

你还没有说你是如何定义这些不同类型的用户的。最通用的解决方案是自定义您的User对象(或使用User配置文件)以指向其类型,其中类型是另一个提供相关折扣的模型。然后,您可以从管理员那里控制类型和折扣金额,而无需硬编码任何内容。

于 2013-08-28T17:26:39.917 回答