[英]Sort a ListField containing ReferenceField (Mongoengine)
我有兩個聲明如下的類:
from mongoengine import Document, fields, DynamicDocument
class Booking(DynamicDocument):
booking_id=fields.StringField(required=True)
pickup_timestamp=fields.DateTimeField()
class Assignment(Document):
created_timestamp=fields.DateTimeField(default=datetime.datetime.utcnow)
pickup_time=fields.DateTimeField()
bookings=fields.ListField(fields.ReferenceField(Booking))
我的應用程序允許用戶通過從UI列表中選擇“預定”對象,將“預定”放在一起。 創建分配對象時,我會自動將“拾取時間”設置為“預訂” pickup_timestamp中的最小值,如下所示:
assignment.pickup_time = min([booking.pickup_timestamp for booking in assignment.bookings])
但是,我還需要根據最早的Booking對象中的其他字段在賦值對象上設置其他屬性。 我的問題-有沒有一種方法可以通過引用對象上的字段對包含ReferenceFields的ListField進行排序?
我確實找到了這個答案,但是它沒有談論ListField中的ReferenceFields。 試圖將字段類型也設置為SortedListField,但我無法弄清楚如何指定要對哪個鍵進行排序。
解決-
assignment.bookings=sorted(assignment.bookings, key=lambda k: k.pickup_timestamp)
這幾乎是一樣的這個答案。 在這方面,我不知道MongoEngine ListField的行為就像字典一樣! 如果有更有效/更好的方式來做到這一點,將非常希望知道!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.