Django按类别ID显示子类别

问题描述 投票:1回答:1

我有一个问题(我认为)与网址和观点。所以,我有3个类别,每个类别有3个子类别。我想在点击每个类别时打开子类别。

URLs.朋友:

urlpatterns = [
    path('', views.index),
    url(r'^category/(?P<pk>\d+)$', views.category, name='category'),
]

views.朋友:

def category(request):
    categories = Category.objects.all()
    subcategories = SubCategory.objects.all()
    return render(request, 'category.html', {'categories': categories, 'subcategories': subcategories}

base.html文件:

{% for category in categories%}
    <a class="dropdown-item" href="{% url 'category' pk=category.pk %}">{{ category.name }}</a>
{% endfor %}

models.朋友

class Category(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()

    def __str__(self):
        return self.name


class SubCategory(models.Model):
    name = models.CharField(max_length=100)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    image_url = models.CharField(default=0, max_length=2000)
    price = models.IntegerField(default=0)
python django categories
1个回答
1
投票

URLs.朋友

urlpatterns = [
    path('', views.index),
    url(r'^get_subcategory/(?P<pk>\d+)$', views.get_subcategory, name='get_subcategory'),
]

models.py(应该这样)

class Category():
     name=models.CharField()

class SubCategory():
     name=models.CharField()
     category = models.ForeignKey(Category)

views.朋友

def get_subcategory(request, pk):
        category = Category.objects.get(id=pk)
        subcategories = SubCategory.objects.filter(category=category)
        return render(request, 'category.html', {'categories': categories, 'subcategories': subcategories}

HTML

{% for category in categories%}
    <a class="dropdown-item" href="{% url 'YourAppName:get_subcategory' pk=category.id %}">{{ category.name }}</a>
{% endfor %}
© www.soinside.com 2019 - 2024. All rights reserved.