我有以下型号:
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)
这不会产生正确的结果.
任何帮助,将不胜感激.提前致谢.
我有一个带有 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),它就起作用了。为什么会发生这种情况?