Django Показать подкатегории по идентификатору категории - PullRequest
1 голос
/ 06 марта 2019

У меня проблема (я думаю) с URL-адресами и представлениями. Итак, у меня есть 3 категории, и у каждой из них есть 3 подкатегории. Я хочу открыть подкатегории при нажатии на каждую категорию.

urls.py:

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

views.py:

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.py

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)

1 Ответ

1 голос
/ 06 марта 2019

urls.py

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.py

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 %}
...