我有这样的模型:
class Order(models.Model):
order_id = models.CharField(max_length=100)
title = models.TextField(max_length=600)
title_2 = models.TextField(max_length=100)
attempts = models.ForeignKey('self', blank=True, null=True, on_delete=models.PROTECT)
driver = models.ForeignKey(Driver, blank=True, null=True, on_delete=models.SET_NULL)
updated_at = models.DateTimeField(blank=True, default=datetime.datetime.now())
我想在我的anotation实现我需要一些尝试的基础上旧的updated_at值。但活跃的顺序有attempts=None
。我怎样才能正确地计算尝试次数?
1条答案
按热度按时间5fjcxozz1#
首先,如果有一个与
self
相关的fk
,您的数据库中将有一些严重的数据重复。因为您必须重新创建Order
及其值,并设置与第一个相关的attempt
。要避免重复的字段,请创建另一个表来保存这些DeliveryAttempts
。请注意,您可以在
DateTimeField
上使用.auto_now
和.auto_now_add
而不是default
models.py
你不一定需要
annotate
你的QuerySet
你可以实现一个SerializerMethodField
和计数相关的对象,这是更简单的方式。但是,既然你问了,这里有一种方法可以做到这一点:views.py
serialiers.py