Python django中基于类别的列表视图

Python django中基于类别的列表视图,python,django,Python,Django,我有两个模型,第一个是类别,第二个是详细信息,我想做一个视图,在那里我可以点击一个类别,链接应该只带我到我点击的当前类别的列表。 我的模型如下: class FoodCategory(models.Model): categoryname = models.CharField(max_length=100) categorydetails = models.CharField(max_length=1000) categoryimage = models.ImageFie

我有两个模型,第一个是类别,第二个是详细信息,我想做一个视图,在那里我可以点击一个类别,链接应该只带我到我点击的当前类别的列表。 我的模型如下:

class FoodCategory(models.Model):
    categoryname = models.CharField(max_length=100)
    categorydetails = models.CharField(max_length=1000)
    categoryimage = models.ImageField(default='cat_def.jpg', 
    upload_to='catimg')

    class Meta:
        verbose_name = 'Food Category'

    def __str__(self):
        return self.categoryname


class FoodDetails(models.Model):
    fromcategory = models.ForeignKey(FoodCategory, 
    on_delete=models.CASCADE)
    foodname = models.CharField(max_length=100)
    fooddetails = models.CharField(max_length=1000)
    foodimage = models.ImageField(default='food_def.jpg', 
    upload_to='fodimg')
    armodel = models.CharField(default='andy.sfb', max_length=50)
    additiondate = models.DateTimeField(default=timezone.now)
    addedby = models.ForeignKey(User, on_delete=models.CASCADE)

    class Meta:
        verbose_name = 'Food Detail'

    def __str__(self):
        return self.fromcategory.categoryname + \
           ' - ' + self.foodname + \
           ' - ' + 'added by' + \
           ' - ' + self.addedby.username

    def get_absolute_url(self):
        return reverse('food-details', kwargs={'pk': self.pk})
views.py文件:

from django.shortcuts import render
from food.models import FoodCategory, FoodDetails
from django.views.generic import ListView, DetailView


class FoodCategoryView(ListView):
    model = FoodCategory
    template_name = 'food/food-category.html'
    context_object_name = 'food'


class FoodListView(ListView):
    model = FoodDetails
    template_name = 'food/food-list.html'
    context_object_name = 'food'

    ordering = ['-additiondate']


class FoodDetailsView(DetailView):
    model = FoodDetails
    template_name = 'food/FoodDetails_detail.html'
还有我的URL.py文件:

from django.urls import path, include
from . import views
from .views import FoodCategoryView, FoodListView, FoodDetailsView

# api url handler

urlpatterns = [
    path('category/', FoodCategoryView.as_view(), name='food- 
    category'),
    path('foodlist/', FoodListView.as_view(), name='food-list'),
    path('foodlist/<int:pk>/', FoodDetailsView.as_view(), 
    name='food-details')

]
从django.url导入路径,包括
从…起导入视图
from.views导入FoodCategoryView、FoodListView、FoodDetailsView
#api url处理程序
URL模式=[
路径('category/',FoodCategoryView.as_view(),name='food-
类别),,
路径('foodlist/',FoodListView.as_view(),name='food-list'),
路径('foodlist/',FoodDetailsView.as_view(),
name='food-details')
]

这是我的所有文件,我只想知道获取当前基于类别的食品详细信息的具体方法。

您可以通过在列表视图上定义
get\u queryset
来实现这一点

class FoodDetailsByCategory(ListView):
    def get_queryset(self):
        return FoodDetails.objects.filter(fromcategory_id=self.kwargs['category_id'])
使用简单的URL:

path('category/<int:category_id>', FoodDetailsByCategory.as_view(), name='food_details_by_category')
path('category/',FoodDetailsByCategory.as_view(),name='food_details_by_category')

您可以通过在列表视图上定义
get\u queryset
来实现这一点

class FoodDetailsByCategory(ListView):
    def get_queryset(self):
        return FoodDetails.objects.filter(fromcategory_id=self.kwargs['category_id'])
使用简单的URL:

path('category/<int:category_id>', FoodDetailsByCategory.as_view(), name='food_details_by_category')
path('category/',FoodDetailsByCategory.as_view(),name='food_details_by_category')

我认为您必须阅读Django文档,才能了解如何在Django模板中创建视图并返回结果:这里就是模型。这还不够,欢迎来到SO。请阅读,这样你就知道什么样的问题在这个论坛上是合适的。您需要展示您所面临的特定问题,这不是让其他人为您编写代码的目的。请先写下您的观点,通过阅读文档并亲自尝试来表明您已经做出了努力。当面对一个特定的问题时,你可以在这里询问。我会更新url和视图,我认为你必须阅读Django文档,以了解如何在Django模板中创建视图并返回结果:这里你只有模型。这还不够,欢迎来到SO。请阅读,这样你就知道什么样的问题在这个论坛上是合适的。您需要展示您所面临的特定问题,这不是让其他人为您编写代码的目的。请先写下您的观点,通过阅读文档并亲自尝试来表明您已经做出了努力。当面对一个特定的问题时,你可以在这里询问。我会很快更新url并查看