Просмотр категории Джанго - PullRequest
0 голосов
/ 30 октября 2019

Я новичок в django, и, возможно, это глупый вопрос, но я застрял с этим на некоторое время ... поэтому у меня есть несколько категорий лекарств, таких как AINS, антидепрессанты, и у каждой из этих категорий есть свои лекарства,и я пытаюсь показать своим пользователям все лекарства определенной категории: поэтому, если пользователь наберет www.namesite.com/meds/AINS, он покажет только лекарства для этой конкретной категории. AINS. Я думаю, что ядолжен получить абсолютный URL-адрес каждой категории и отфильтровать все лекарства в этой конкретной категории?

Модель:

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

URL:

   path('medicaments/<slug>/', MedCategoriesView.as_view(), name='meds'),

1 Ответ

0 голосов
/ 30 октября 2019

Использование представлений на основе функций.

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