Django目录视图

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

我是django的新手,也许这是一个愚蠢的问题,但是我已经坚持了一段时间。我正在尝试向我的用户显示特定类别的所有药物:因此,如果用户键入www.namesite.com/meds/AINS,则它将仅显示该特定类别的药物。.AINS。我认为我应该获取每个类别的绝对网址,并过滤该特定类别中的所有药物?

型号:

class Category(models.Model):
    category = models.CharField(max_length=30)
    slug = models.SlugField()

    def __str__(self):
        return self.category

    def get_absolute_url(self):
        return reverse("meds", kwargs={'slug':self.category})

    class Meta:
        verbose_name_plural = 'Categorii'




class Medicament(models.Model):
    title = models.CharField(max_length=50)
    description = models.TextField(max_length=200)
    category = models.ForeignKey(Category, on_delete='CASCADE')
    price = models.DecimalField(decimal_places=2, max_digits=4)
    prospect = models.TextField(default='Prospect')
    company = models.TextField(default = 'company')
    nr_unitati = models.IntegerField()
    quantity = models.CharField(max_length=5, default='mg')
    date_added = models.DateTimeField(auto_now_add=True)
    rating = models.IntegerField(null=True, blank=True)
    amount = models.IntegerField(default=0)


    def __str__(self):
        return self.title + ' ' + self.company + ' ' + str(self.nr_unitati) + ' ' + self.quantity


    class Meta:
        verbose_name_plural = 'Medicamente'

观看次数:

class MedCategoriesView(DetailView):
    model = Category
    template_name = 'products/AINS.html'
    context_object_name = 'all_categories'

    def get_context_data(self, **kwargs):
        context = super(AINS_ListView, self).get_context_data(**kwargs)
        context['meds'] = Medicament.objects.filter(category=self.object)
        return context

网址:

   path('medicaments/<slug>/', MedCategoriesView.as_view(), name='meds'),
django categories
1个回答
0
投票

使用基于功能的视图。

def medicament(request, slug):
    try:
        medicaments = Medicament.objects.filter(category__slug=slug)
    except Medicament.DoesNotExist:
        raise Http404("Medicament does not exist")
    return render(request, 'products/AINS.html', {'medicaments': medicaments})
© www.soinside.com 2019 - 2024. All rights reserved.