Как отобразить название категории выбранных обоев

models.py

class Category(models.Model):
    category_name = models.CharField(max_length=100)

    def __str__(self):
        return self.category_name


class SubCategory(models.Model):
    sub = models.CharField(max_length=100)
    category = models.ForeignKey(Category,on_delete=models.CASCADE)      

    def __str__(self):
        return self.sub


class Wallpaper(models.Model):
    subcategory = models.ManyToManyField(SubCategory)

вот мой view.py

def download(request, wallpaper_name):
    try:
        wallpaper = Wallpaper.objects.get(name=wallpaper_name)
       

context = {'wallpaper': wallpaper}
return render(request, 'Wallpaper/download.html', context)

на моей странице загрузки как я могу показать название категории этих конкретных обоев

Вы можете просто использовать это. Проверьте это docs.


def download(request, wallpaper_name):
    try:
        wallpaper = Wallpaper.objects.get(name=wallpaper_name)
        categories_name = wallpaper.subcategory.values_list(
                "category__category_name", 
                flat=True
        ).distinct("category")
    ....

Быстрое и грязное решение - получить все подкатегории из обоев, которые вы только что нашли. Затем получите имя_категории каждой подкатегории:

def download(request, wallpaper_name):
    try:
        wallpaper = Wallpaper.objects.get(name=wallpaper_name)
       subcategories = wallpaper.subcategory.all()
       category_names = [cat.category_name for cat in subcatedories]
Вернуться на верх