tôi có các mô hình sau:Django: biểu thức điều kiện
class Agreement(models.Model):
...
organization = models.ForeignKey("Organization")
class Signed_Agreement(models.Model):
agreement = models.ForeignKey("Agreement")
member = models.ForeignKey("Member")
Những gì tôi đang cố gắng làm là có được một danh sách tất cả các thỏa thuận cho một tổ chức cụ thể (self.organization) và chú thích từng thỏa thuận với thông tin về việc có hay không nó đã được ký bởi một thành viên cụ thể (self.member).
Nếu Thỏa thuận đã được ký, thì tồn tại phiên bản Signed_Agreement cho thỏa thuận và thành viên cụ thể.
Tôi làm cách nào để viết truy vấn cho điều này?
Đây là nỗ lực của tôi cho đến nay:
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
Đây không phải là sản xuất các kết quả chính xác.
Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn trước.
Cảm ơn câu trả lời của bạn, điều này khiến tôi rất gần với những gì tôi muốn. Tôi nhận được lỗi này: django.core.exceptions.FieldError: Không thể giải quyết loại biểu thức, không rõ output_field Bạn có biết điều này có nghĩa là gì không? –
Có vẻ như bạn phải nói với trường hợp 'Trường hợp 'là loại trường nào, tôi đã chỉnh sửa câu trả lời để làm như vậy – sedavidw
Tôi hiểu rồi, cảm ơn bạn rất nhiều. –