【问题标题】:how to filter data from two django class如何过滤来自两个 django 类的数据
【发布时间】:2021-12-08 21:33:17
【问题描述】:

我有两个 Django 类,我想在 Django Get 方法中通过 site_key 过滤 VCDUnavailAudit,我该怎么做

enter code here
class VCDUnavailAudit(models.Model):
    user_key = models.IntegerField()
    user_name = models.CharField(max_length=40)
class User(models.Model):
    user_key = models.AutoField(primary_key=True)
    site_key = models.IntegerField() 
@api_view(['GET'])
def get_unavail_audit_records_by_site(request, site_key: int):
    availability_audit_records = VCDUnavailAudit.objects.filter
    serializer = VCDUnavailAuditSerializer(availability_audit_records, many=True)
    return Response(serializer.data, status=status.HTTP_200_OK)

【问题讨论】:

    标签: python django filter view get


    【解决方案1】:

    首先创建一个从具有给定site_key 的用户那里收集的所有 user_keys 的列表。

    user_keys = [user.user_key for user in User.objects.filter(site_key=site_key)]
    

    然后获取所有在 user_keys 列表中包含 user_key 的可用性审计记录。

    audits = VCDUnavailAudit.objects.filter(user_key__in=user_keys)
    

    完整视图:

    @api_view(['GET'])
    def get_unavail_audit_records_by_site(request, site_key: int):
        user_keys = [user.user_key for user in User.objects.filter(site_key=site_key)]
        audits = VCDUnavailAudit.objects.filter(user_key__in=user_keys)
        serializer = VCDUnavailAuditSerializer(audits, many=True)
        return Response(serializer.data, status=status.HTTP_200_OK)
    

    【讨论】:

    • 这不起作用,并且有很多用户匹配该站点。 user_key = User.objects.get(site_key=site_key).user_key 只会得到一个用户吗?
    • 所以你想感染所有用户还是只感染一个用户?我将为此再次编辑答案。
    • 所有用户具有相同的 site_key。谢谢。
    • 我已经更新了答案。请再次检查。
    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 2021-11-24
    • 1970-01-01
    • 2021-01-27
    • 2019-04-02
    • 2021-01-12
    • 2015-09-29
    • 2015-10-25
    相关资源
    最近更新 更多