首页 > 解决方案 > 视图和模板中的设置值问题

问题描述

我想创建一个列表,用户可以在其中为他的列表提供标题,他可以在其中选择他应该属于哪个类别,这就是模型的样子

class UserListAnime(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    anime = models.ManyToManyField(Anime, through='ListAnime')


class Anime(models.Model):
    title = models.CharField(max_length=200)
    slug = extension_fields.AutoSlugField(populate_from='title', blank=True)


class ListAnime(models.Model):

LIST_CHOICES = (
        (WATCHING, 'Oglądam'),
        (PLANNING, 'Planuję'),
        (COMPLETED, 'Ukończone'),
        (DROPPED, 'Porzucone'),
        (ONHOLD, 'Wstrzymane'),
        (MISSING, 'Pomijam'),
    )

user = models.ForeignKey(UserListAnime, on_delete=models.CASCADE, null=True, blank=True)
    anime = models.ForeignKey(Anime, on_delete=models.CASCADE, null=True, blank=True)
    type = models.CharField(max_length=30, choices=LIST_CHOICES, null=False, blank=False)

在视图中,我只需要获取用户列表并显示它,但我希望通过输入类型对其进行过滤ListAnime

def ListAnimeView(request, pk, username):
    list_anime = UserListAnime.objects.filter(user__pk=pk, user__username=username,
                                           listanime__type='ogladam',
                                           anime__listanime__type='ogladam').all()
    context = locals()

和 html 看起来像

{% for list in list_anime.anime.all %}
    {{ list }}
{% endfor %}

我的问题是如何在 type = LIST_CHOICES 时提取所有记录并在 html 中显示

编辑:已解决只需要从UserListAnime,objects..toListAnime.objects 和 html 中更改视图即可

{% for list in list_anime %}
    {{ list.anime }}
{% endfor %}

标签: djangodjango-templatesdjango-views

解决方案


我不知道你到底想达到什么目的。您想获取ListAnime给定用户的实体列表,并且只获取“ogladam”类型的实体吗?

def listAnimeView(request, pk):
    list_anime = ListAnime.objects.filter(user__user_id=pk, type='ogladam')
    return render(request, 'template-name', context=['list_anime': list_anime])'

推荐阅读