【问题标题】:I cannot create category and sub-categories list in home page,django我无法在主页中创建类别和子类别列表,django
【发布时间】:2020-10-01 16:13:16
【问题描述】:

我可以在新模板中创建包含子类别的类别页面,但我无法在主页中列出所有子类别。我只需要一个在主页上工作的逻辑。

这是我的models.py

class Category(MPTTModel):
    name = models.CharField(max_length=100,unique=True)
    parent = TreeForeignKey('self',null=True,blank=True,related_name='children',db_index=True,on_delete = models.CASCADE)
    slug = models.SlugField()

    class MPTTMeta:
        order_insertion_by = ['name']
    
    def get_slug_list(self):
        try:
            ancestors = self.get_ancestors(include_self=True)
        except:
            ancestors = []
        else:
            ancestors = [ i.slug for i in ancestors]
        slugs = []
        for i in range(len(ancestors)):
            slugs.append('/'.join(ancestors[:i+1]))
        return slugs

    def __str__(self):
        return self.name
    
    def get_absolute_url(self):
        return reverse('product:product-category',args=[self.slug])

class Product(models.Model):
    category = TreeForeignKey(Category,null=True,blank=True,on_delete=models.CASCADE)
    name = models.CharField(max_length=200)
    slug = models.SlugField(max_length=200,unique=True)
    def get_absolute_url(self):
        return reverse('product:product-detail',kwargs={
            'slug':self.slug,
            
        })

这是我的意见.py

def product_list(request,category_slug=None):
    category = None
    categories = Category.objects.all()
    products = Product.objects.filter(available=True)
    if category_slug:
        category = get_object_or_404(Category,slug=category_slug)
        products = products.filter(category=category)
    
    return render(
        request,'product/home.html',{
            'category':category,
            'categories':categories,
            'products':products
        }
    )


def show_category(request,hierarchy= None):
    category_slug = hierarchy.split('/')
    parent = None
    root = Category.objects.all()

    for slug in category_slug[:-1]:
        parent = root.get(parent=parent, slug = slug)

    try:
        instance = Category.objects.get(parent=parent,slug=category_slug[-1])
    except:
        instance = get_object_or_404(Product, slug = category_slug[-1])
        return render(request, 'product/product.html', {'instance':instance})
    else:
        return render(request, 'product/categories.html', {'instance':instance})
 

我在我的模板中使用了这个逻辑,但它不起作用。因此,对于显示类别和子类别列表的任何帮助将不胜感激。

      {% for c in categories %}
        <a href="{{ c.get_absolute_url }}">{{ c.parent }}</a>
       {% for i in c.children.all %}
       <a href="#">{{ i.name }}</a>
       {% endfor %}
        
        
      {% endfor %}

【问题讨论】:

  • 您能否更详细地解释您面临的问题?如果您遇到错误,请将其与问题一起发布,以便我们为您提供更好的帮助。

标签: python django templates mptt


【解决方案1】:

您面临的问题不是很清楚。 但无论如何,请查看template 的类别view

【讨论】:

  • 这没有帮助。所有的东西都在工作,但是当谈到在模板中显示类别列表时,我什么都没有。我的模板中的逻辑不适用于视图中的逻辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 2010-11-28
  • 2023-03-16
  • 2017-05-26
  • 2017-10-28
相关资源
最近更新 更多