我正在写一个基于商店的应用程序。比如商店A,商店A可以有多个用户,每个用户可以属于多个商店。但是,每个商店都有产品,每个产品都有与之相关的尺寸。
class Variation(models.Model):
product = models.ForeignKey("Product")
size = models.CharField(choices=SIZES, max_length=5)
pid = models.CharField(unique=True, max_length=100, verbose_name="Product ID")
id_type = models.CharField(max_length=5, choices=ID_TYPES, default="UPC")
price = models.DecimalField(max_digits=5, decimal_places=2)
store = models.ForeignKey("Store")
class Meta:
unique_together = ("store", "pid")
class Product(models.Model):
item = models.CharField(max_length=100, verbose_name="Parent SKU", help_text="reference# - Color Code")
# Google docs sp key
store = models.ForeignKey(Store)
class Store(models.Model):
name = models.CharField(max_length=100)
store_id = models.PositiveIntegerField(unique=True)
admins = models.ManyToManyField(User)
objects = StoreManager()
def __unicode__(self):
return self.name
所以我必须为Product编写一个自定义管理器,以便按商店过滤所有产品,并覆盖此模型的管理类的queryset方法,并为属于所述商店的每个属性执行此操作。所以基本上我的问题是,有没有办法过滤每个商店,产品,门票,变种与商店相关的所有属性
修改的 到目前为止,这是产品经理
class ProductManager(models.Manager):
def active(self, **kwargs):
return self.filter(in_queue=False, **kwargs)
def by_store(self, store=None, **kwargs):
return self.filter(store__id__exact=store, **kwargs)
def from_user(self, request):
qs = self.model.objects.none()
for store in request.user.store_set.all():
qs = qs | store.product_set.filter(in_queue=False)
return qs
所以基本上,为了在更改列表页面中显示产品,我使用from user方法,该方法返回登录用户可用的所有产品
答案 0 :(得分:1)
听起来你想要使用的是django "Sites" framework
将一个ForeignKey添加到Store以指向Site并使其唯一。
此时将Variation和Products的ForeignKeys指向Site而非Store也是明智之举,以便在您的视图中您可以按当前站点过滤结果。