我有以下型号:Django的:条件表达式
class Agreement(models.Model):
...
organization = models.ForeignKey("Organization")
class Signed_Agreement(models.Model):
agreement = models.ForeignKey("Agreement")
member = models.ForeignKey("Member")
我想要做的就是针对特定组织(self.organization)的所有协议的清单和注释与信息的每个协议关于它是否由特定成员(self.member)签署。
如果协议已经签署,则存在对特定协议和成员Signed_Agreement的一个实例。
如何为此编写查询?
这里是我的努力迄今:
from django.db.models import When, F, Q, Value
def get_queryset(self):
agreements = _agreement_model.Agreement.objects.filter(
organization=self.organization
).annotate(
signed=When(Q(signed_agreement__member=self.member), then=Value(True))
).order_by(
'name'
)
return agreements
这不产生正确的结果。
任何帮助,将不胜感激。提前致谢。
感谢您的回答,这让我非常接近我想要的东西。我收到此错误: django.core.exceptions.FieldError:无法解析表达式类型,未知output_field 你知道这是什么意思? –
看起来你必须告诉'Case'它是什么类型的字段,我已经编辑了这样的答案 – sedavidw
啊我看到了,非常感谢。 –