从django orm中获取硬查询.Django rest框架



我有两个模型,Project和ShareProject。我需要列出项目在哪里ShareProject。User = request.user。我很困惑如何才能得到这个查询集。

class Project(models.Model):
name = models.CharField(max_length=16, verbose_name='название', blank=False)
user = models.ForeignKey(User, on_delete=models.CASCADE)
prototype = models.ForeignKey('Prototype', on_delete=models.CASCADE)
colors = jsonfield.JSONField()

class SharedProject(models.Model):
from_user = models.ForeignKey(User, to_field='email', on_delete=models.CASCADE, related_name='from_user')
to_user = models.ForeignKey(User, to_field='email', on_delete=models.CASCADE, related_name='to_user')
project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='share_project')
permission = jsonfield.JSONField()
all_users = models.BooleanField()

您需要遍历反向关系。请查看文档,它们提供了大量的信息。

from django.db.models import Q
related_projects = Project.objects.filter(
Q(share_project__to_user=request.user)
| Q(share_project__from_user=request.user)
)

你的问题与你关于ShareProject.user的模型不匹配,所以我创建了一个查询集,将两个用户引用组合在一起。我不认为这正是你想要的,但我希望你能把它作为一个起点。

应该像这样简单。

projects = [share_project.project for share_project in SharedProject.objects.filter(to_user__id = request.user)]

最新更新