[英]Convert QuerySet into List in Dict and then regroup using regroup templatetag in Django
我想根据 html 模板上的成员资格重新组合我的列表视图。 下面是我的模型:
MEMBERSHIP_CHOICES = (
('VIP', 'VIP'),
('Premium', 'Premium'),
('New', 'New'),
)
class Membership(models.Model):
name = models.CharField(max_length=7, choices=MEMBERSHIP_CHOICES, default='New')
def __str__(self):
return self.name
class Escort(models.Model):
profile_pic = models.ImageField(null=True, blank=True, upload_to="images/")
name = models.CharField(max_length=40)
author = models.ForeignKey(User, null=False, blank=False, on_delete=models.CASCADE)
about_me = models.TextField()
phone = models.CharField(max_length=14)
ethnicity = models.CharField(max_length=20)
orientation = models.CharField(max_length=20)
location = models.CharField(max_length=40)
area = models.CharField(max_length=15)
skin_color = models.CharField(max_length=40)
hair_color = models.CharField(max_length=40)
services = models.CharField(max_length=255)
membership = models.ForeignKey(Membership, on_delete=models.CASCADE)
created_at = models.DateField(auto_now_add=True)
class Meta:
ordering = ['-membership']
def __str__(self):
return self.name + '~' + str(self.author)
我正在尝试使用我的 views.py 中的以下代码执行查询集并转换为列表字典:
def EscortGroupView(request):
escort_groups = Escort.objects.values('profile_pic', 'name', 'about_me', 'phone',
'ethnicity', 'orientation', 'location', 'area', 'skin_color', 'hair_color', 'services',
'membership_id')
[{'profile_pic': 'profile_pic', 'membership_id': 4},
{'profile_pic': 'profile_pic', 'membership_id': 5},
{'profile_pic': 'profile_pic', 'membership_id': 6},]
return render(request, 'group.html', {'escort_groups': escort_groups})
请注意,我想在 group.html 上呈现重新组合的项目。 在这里使用membership_id 是因为Membership Model 和Escort Model 之间的ForeignKey 关系。 members_ids 代表三个 MEMBERSHIP_CHOICES 中的每一个。 当我运行代码时,除了屏幕上的membership_id 之外,屏幕上没有显示任何内容。 模型字段未显示。 下面是我的 group.html 模板。
{% regroup escort_groups by membership_id as membership_id_list %}
<ul>
{% for membership_id in membership_id_list %}
<li>{{ membership_id.grouper }}
<ul>
{% for escort in membership_id_list %}
<li>{{ escort.name }}: {{ escort.location }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
4 个月前毕业时,我是 python 和 django 的新手。 请指教该怎么办。 在此先感谢您提供的任何帮助。
我就去这个这很简单,无需复杂化:
def EscortGroupView(request):
escort_groups = Escort.objects.all()
return render(request, 'group.html', {'escort_groups': escort_groups})
错误来自membership_id 和list 之间的下划线:
{% for escort in membership_id_list %}
相反,它应该是这样的:
{% for escort in membership_id.list %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.