假设我有以下型号:Python/Django确保来自外键的对象将保持相同的顺序吗?
class Case:
case_name = models.CharField(max_length=200)
class SubTask:
subtask_name = models.CharField(max_length=200)
case = models.ForeignKey(Case, on_delete = models.CASCADE)
假设我创建顺序 SubTask类ST1的四个对象,ST2,ST3和ST4和他们的情况属性设置为案例实例C。现在的问题是,当我做这个循环:
for subtask in SubTask.objects.filter(case=C):
#Do something to subtasks
是否保证通过Python或Django的是,在这个循环中的对象会出现的顺序ST1,ST2,ST3,然后ST4?或者它只保证四个对象以任何顺序循环播放?
注意:我确实尝试了它们,并且它们是按实例化的顺序排列的,但是我想确保这种行为是有保证的,因为排序很重要。
是否有任何内置的方式使用ORDER_BY使这个排序(???),或者我需要添加一个“created_at”属性添加到模型,并将其设置为时区.now()当对象被创建时? – AspiringMat
确保插入顺序的唯一方法是添加时间戳字段,是的。请注意,如果在定义中使用'auto_now_add = True',则Django将自动设置创建日期。 –
太棒了!谢谢您的帮助 :-) – AspiringMat