小编Ash*_*rya的帖子

Django:条件表达式

我有以下型号:

class Agreement(models.Model):
    ...
    organization = models.ForeignKey("Organization")

class Signed_Agreement(models.Model):
    agreement = models.ForeignKey("Agreement")
    member = models.ForeignKey("Member")
Run Code Online (Sandbox Code Playgroud)

我要做的是获取特定组织的所有协议列表(自组织),并使用有关是否已由特定成员(自我成员)签署的信息对每个协议进行注释.

如果协议已经签署,那么特定协议和成员就存在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
Run Code Online (Sandbox Code Playgroud)

这不会产生正确的结果.

任何帮助,将不胜感激.提前致谢.

python django django-orm

10
推荐指数
1
解决办法
3937
查看次数

Django Queryset 按索引问题访问

我有一个带有 created_at 字段的客户端模型。我想从 shell 更新客户端的 created_at。我做了以下事情:

>>> c = Client.objects.all()
>>> c[1].created_at
>>> # I get nothing here since it's not set yet
>>> from django.utils import timezone
>>> c[1].created_at = timezone.now()
>>> c[1].save()
>>> c[1].created_at
>>> # I still get nothing here. Even when I reload the queryset, I get nothing.
Run Code Online (Sandbox Code Playgroud)

但是,当我用 做同样的事情时c = Client.object.get(id=1),它就起作用了。为什么会发生这种情况?

django

2
推荐指数
1
解决办法
3009
查看次数

标签 统计

django ×2

django-orm ×1

python ×1