我想创建一个列表,用户可以在该列表中为其添加标题,并在其中选择应属于的类别,这就是模型的外观
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 %}
答案 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])'