Tôi muốn truy xuất một loạt các hàng từ cơ sở dữ liệu của tôi bằng cách sử dụng một bộ lọc.django điều kiện lọc đối tượng
Tôi đã tự hỏi nếu bộ lọc có điều kiện được áp dụng trong django. Tức là, "lọc nếu biến không phải là Không, hoặc không áp dụng lọc nếu không".
Something như thế này:
user = User.objects.get(pk=1)
category = Category.objects.get(pk=1)
todays_items = Item.objects.filter(user=user, date=now()).conditional_filter(category=category))
Những gì tôi muốn làm là áp dụng loại bộ lọc chỉ khi loại không phải là Không.
Nếu danh mục là Không (nghĩa là danh mục không được đưa ra trong đối tượng yêu cầu) thì bộ lọc này sẽ không được áp dụng. Điều này sẽ tiết kiệm cho tôi một loạt các tình huống 'if-elif-else'.
Có cách nào để thực hiện việc này không?
Cảm ơn, điều tôi không hiểu là 'category__isnull = True'. Không có đối tượng nào của tôi có NULL trong trường thể loại của chúng. Mà làm cho nó luôn luôn là sai. – xpanta
@xpanta, giải thích câu trả lời. – danihp
@danihp, xin lỗi tôi vẫn không hiểu rõ __isnull = True. Nó có áp dụng cho tình huống này hay không: một biểu mẫu có chứa "category", người dùng điền và gửi form. Nếu người dùng không nhập "category" thì đây là "" cho giá trị này. Sau đó, lọc cơ sở dữ liệu KHÔNG CÓ ràng buộc của "thể loại" nếu tôi làm theo ví dụ đầu tiên của bạn? Hãy sửa tôi nếu hiểu biết của tôi đúng. Cảm ơn trước. –