Как отобразить название категории выбранных обоев
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]