在 django-mptt 中过滤 product_set
Filter product_set in 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])
我通过 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 %}
有 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])
我通过 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 %}