簡體   English   中英

對包含ReferenceField的ListField進行排序(Mongoengine)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM