Python Django检索模型的所有相关属性

Python Django检索模型的所有相关属性,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我正在写一个基于商店的应用程序。假设有商店A,商店A可以有多个用户,每个用户可以属于多个商店。但是,每个商店都有产品,每个产品都有与之相关的尺寸 class Variation(models.Model): product = models.ForeignKey("Product") size = models.CharField(choices=SIZES, max_length=5) pid = models.CharField(unique=True, max_le

我正在写一个基于商店的应用程序。假设有商店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
因此,我必须为产品编写一个自定义管理器,以便按存储过滤所有产品,并重写此模型的admin类的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方法,它返回登录用户可用的所有产品

添加要存储的ForeignKey以指向站点并使其唯一


明智的做法是在站点上指出变化和产品的外键,而不是在此时存储,这样在视图中,您可以按当前站点筛选结果。

听起来您想要使用的是

添加要存储的ForeignKey以指向站点并使其唯一


明智的做法是在站点上指出差异和产品的外键,而不是在此时存储,以便在视图中按当前站点筛选结果。

到目前为止,您是否可以为客户经理提供代码?那会有帮助的。到目前为止,你能提供定制管理器的代码吗?这会有帮助。这是一个很好的解决方案,但是我没有多个域,所有存储都在同一个数据库中,该数据库在一个域中运行。那么store.pk应该在会话或cookie中,这样您就可以知道用户的活动存储是什么。我建议放弃管理者,只需在FK上进行过滤,这会起作用,除了一个用户可以有多个存储,尽管这个解决方案我没有考虑过,谢谢:这是一个很好的解决方案,但是我没有多个域,所有存储都在同一个数据库中,该数据库在一个域中运行。因此,store.pk应该在会话或cookie中,以便您知道用户的活动存储是什么。我建议放弃管理者,只需在FK上进行过滤,这会起作用,除了一个用户可以有多个商店,尽管这个解决方案我没有考虑过,谢谢:D