在django-mptt中过滤product_set

时间:2018-01-09 07:19:18

标签: django mptt

有2个型号

class Category(MPTTModel):
    title = models.CharField()
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)

class Product(models.Model):
    category = models.ForeignKey(Category, blank=True, null=True)

我想从两个模型中获取树。 现在我可以得到:

视图中的

nodes = Category.objects.all()
模板中的

{% for n in nodes %}
  {% for t in n.product_set.all %}

但我想得到

nodes = Category.objects.all().**insert_to_category_product_with_filter**(id__in=[list_id])

1 个答案:

答案 0 :(得分:0)

我发现只有一个解决方案来自template_tag

@register.filter()
def filter_GET(node, GET):
    qs = node.product_set.all().prefetch_related('product_set')

    product = GET.get('product', None)
    if product:
        qs = qs.filter(product_id=product)

    any_more = GET.get('any_more', None)

    return qs
模板中的

{% for n in node|filter_GET:request.GET %}