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

标签 python django django-models django-admin

我正在编写一个基于商店的应用程序。假设有 Store A ,Store 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

所以我必须为产品编写一个自定义管理器,以便按商店过滤所有产品,并重写该模型管理类的查询集方法,并对属于所述商店的每个属性执行此操作。所以基本上我的问题是,有没有一种方法可以过滤与每个商店的商店相关的所有属性,例如产品、门票、变体

编辑 这是迄今为止的产品经理

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 方法,该方法返回登录用户可用的所有产品

最佳答案

听起来您想要使用的是 django "Sites" framework

向 Store 添加一个外键以指向站点并使其唯一。

此时将变体和产品的外键指向站点而不是商店可能是明智的,以便在您的 View 中可以按当前站点过滤结果。

关于python - Django 检索模型的所有相关属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8129632/

相关文章:

python - 图像的轮廓轴

python - 在 Web 应用程序中哪里存储颜色信息?

python - Django 将模型实例传递给略有不同的模型

python - 模型中有一个名为 'created' 的字段 - Django

django - 如何在 Django 中使用 ManyToManyField 关系计算对象?

python - 自动增加每个类别中的字段?

python - 将 pandas df 与 how=inner 和非唯一项合并

python - 如何展平 Pandas 数据框以保留索引和列名

python - Pandas 数据框从长到宽转换,每个索引的行数不同

python - 返回 render() 时 Django NoReverseMatch