Tôi đang cố gắng lấy đối tượng mô hình Django mới nhất nhưng dường như không thể thành công.
Cả hai đều không hoạt động:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
Tôi đang cố gắng lấy đối tượng mô hình Django mới nhất nhưng dường như không thể thành công.
Cả hai đều không hoạt động:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
NewsPostImage.objects.filter(newsPostTarget=img_id).first()
. Hy vọng nó giúp.
Câu trả lời:
obj= Model.objects.filter(testfield=12).order_by('-id')[0]
Xem tài liệu từ django: https://docs.djangoproject.com/en/dev/ref/models/querysets/#latest
Bạn cần chỉ định một trường trong new (). ví dụ.
obj= Model.objects.filter(testfield=12).latest('testfield')
Hoặc nếu Meta của mô hình của bạn chỉ định get_latest_by, bạn có thể bỏ qua field_name
đối số earliest() or latest()
. Django sẽ sử dụng trường được chỉ định get_latest_by
theo mặc định.
Ký tên cuối cùng ():
ModelName.objects.last()
sử dụng mới nhất ():
ModelName.objects.latest('id')
latest
thực sự được thiết kế để hoạt động với các trường ngày tháng (nó có thể cũng hoạt động với các loại được sắp xếp theo tổng số khác, nhưng không chắc chắn). Và cách duy nhất bạn có thể sử dụng nó mà không cần chỉ định tên trường là đặt get_latest_by
thuộc tính meta, như đã đề cập ở đây .
Model.objects.latest('id')
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
là giải pháp đúng
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]