2016-01-21 69 views
0

我想在我的网页上制作促销系统。Django相关对象和空外键

而且我想几个选项:

  • 给客户的折扣,所有产品
  • 给客户折扣的产品之一
  • 给所有客户的折扣,对于产品的一个

如何为了实现这个模型? 我想过在促销模型中使用可为空的外键,但是如何在产品模型中使用相关对象,因为我使用等于客户端外键的外键和外键= NULL的所有外键都进行了内部匹配。

或者,也许可以添加一些经理到产品模型,在那里我会搜索促销价格,取决于客户的ID?

+2

请仔细阅读django基础教程,它在模型设计中做得很好,我相信你会从那里学到更多,而不是在这里。 –

回答

2

您的设计与可空领域是相当好的。你只需要一些薄薄的包装。

假设您想为当前用户选择所有的促销活动。也就是说,有用户选择的宣传片,或没有用户指定的宣传片。这是很容易实现与Django的:

from django.db.models import Q 

class PromotionQuerySet(models.QuerySet): 
    def for_user(self, user): 
     return self.filter(Q(user=user) | Q(user__isnull=True)) 


class Promotion(models.Model): 
    user = models.ForeignKey(User, null=True) 

    objects = PromotionQuerySet.as_manager() 


# and later in your code, say, in the view: 
active_promos = Promotion.objects.for_user(request.user) 

同样是关于Product场如此。