视图和模板中的设置值存在问题

时间:2018-11-13 14:43:10

标签: django django-templates django-views

我想创建一个列表,用户可以在该列表中为其添加标题,并在其中选择应属于的类别,这就是模型的外观

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..更改为ListAnime.objects 并且在html中应该是

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

1 个答案:

答案 0 :(得分:0)

我不知道您到底想达到什么目标。您是否要获得给定用户的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])'
相关问题