(Tất cả mã bên dưới là biểu diễn đơn giản của mã thực tế).Truy vấn Django với số học đơn giản giữa các trường mô hình và so sánh với trường từ mô hình khác
Nếu tôi có các mô hình Django sau: -
class Material(models.Model):
name = models.CharField(max_length=110)
class OrderDetail(models.Model):
material = models.ForeignKey(Material)
order_quantity = models.IntegerField()
quantity_delivered = models.IntegerField(null=True, blank=True)
is_open = models.BooleanField()
is_active = models.BooleanField()
class MaterialRequirement(models.Model):
material = models.ForeignKey(Material)
quantity = models.IntegerField()
tôi có với tôi một ví dụ của mô hình MaterialRequirement
, chúng ta hãy gọi nó material_requirement
. Tôi cố gắng để lấy OrderDetail
đối tượng đáp ứng các tiêu chí sau: -
1. material = material_requirement.material
2. is_open = True
3. is_active = True
4. order_quantity > quantity_delivered
5. material_requirement.quantity <= order_quantity - quantity_delivered
Câu hỏi của tôi là làm thế nào để kết hợp các tiêu chí lựa chọn thứ 5 trong truy vấn ORM của tôi dưới đây.
order_details = OrderDetail.objects.select_related('material').filter(material=material_requirement.material,
is_open=True,
is_active=True,
order_quantity__gt=F('quantity_delivered'))
Apologize cho tất cả - chỉ không. 5 nên được material_requirement.quantity <= order_quantity - quantity_delivered và không material_requirement.quantity> = order_quantity - quantity_delivered. Tôi đã sửa chữa câu hỏi. Một lần nữa, xin lỗi. – chefsmart