您好 我有以下模型:
class Participation(models.Model):
workflow_activity = models.ForeignKey('WorkflowActivity')
user = models.ForeignKey(User)
role = models.ForeignKey(Role)
current = models.BooleanField()
这是多对多'通过'表。
我想过滤具有以下任一条件的workflow_activity
实例:
current==False
非常感谢帮助构建查询!
修改
嘿大家,谢谢你的回复。我想我可能接近这个错误了。我的要求是我建立一种具有自动分配功能的票务系统,该功能根据一些选择逻辑将用户分配给票据。我将assign函数作为周期性任务运行(使用celery),但为此我需要选择当前未分配给票证当前状态的票证。当前布尔值用于标记该特定用户是否已分配给故障单的当前状态。有关实施此问题的任何想法/想法?
EDIT2
我想到了一个人:
class WorkflowActivity(models.Model):
...
...
assigned_to = models.ManytoManyField('Participation') # older table without the current field
current = models.ManytoManyField('Current')
class Current(models.Model):
participant = models.ForeignKey('Participation')
我知道,这是值得一提的,但我能提出的还有其他选择吗?
答案 0 :(得分:1)
对于#1,这应该有效:
from django.db.models import Count
WorkflowActivity.objects.annotate(users=Count('participation__user')).filter(users=0)
不幸的是,在Django的ORM中只使用内置函数来做#2没有好方法。您可以尝试按Ticket 11305中的建议扩展Count
类型。
修改强>
如果您有兴趣查找至少有一个有效WorkflowActivities
的所有User
,您可以这样做:
WorkflowActivity.objects.filter(participation__current=True)