Когда я пытаюсь отобразить теги, я получаю Wallpaper.Wallpaper.None

views.py

def download(request, wallpaper_name):
try:
    wallpaper = Wallpaper.objects.get(name=wallpaper_name)
    similar_wallpapers = wallpaper.tags.similar_objects()[:2]

except Exception as exc:
    wallpaper = None
    similar_wallpapers = None
    messages.error = (request, 'Sorry! data does not exist')

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

models.py

class Tags(models.Model):
tag = models.CharField(max_length=100)

def __str__(self):
    return self.tag



class Wallpaper(models.Model):
    name = models.CharField(max_length=100, null=True)
    size = models.CharField(max_length=50, null=True)
    pub_date = models.DateField('date published', null=True)
    resolution = models.CharField(max_length=100, null=True)
    category = models.ManyToManyField(Category)
    tags = TaggableManager()
    Device_Choices = [
        ('PC', 'pc'),
        ('mobile', 'mobile')
    ]
    Devices = models.CharField(max_length=20,choices=Device_Choices, default= 'PC')
    image = models.ImageField(upload_to='Wallpaper/Images/', default="")

    def __str__(self):
        return self.name

download.html

<div class="tag">
    <h3>Tags</h3>
    <ul>

        <li>{{wallpaper.tags}}</li>

    </ul>
    
</div>

Я хочу, чтобы были отображены все теги этих конкретных обоев

и если возможно, пожалуйста, скажите мне, есть ли какой-нибудь другой способ работы с тегами, потому что использовать taggit очень сложно, я получаю множество ошибок

Теги являются отношением "многие ко многим", поэтому вам нужно использовать .all в вашем шаблоне, чтобы получить их. Однако, это просто покажет вам набор запросов, поэтому вам нужно пройтись по ним, чтобы отобразить их имена:

<ul>
{% for tag in wallpaper.tags.all %}
    <li>{{ tag.name }}</li>
{% endfor %}
</ul>
Вернуться на верх