繁体   English   中英

将 QuerySet 转换为 Dict 中的 List,然后在 Django 中使用 regroup templatetag 重新组合

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM