我有一个模型,可以说是客户。我想为该客户添加一个字段让我们说 next_meeting。这将是一个日期时间字段,并且将包含下一次与客户会面的日期。我还有一个会议模型,它再次具有 datetimeField 类型的日期字段。所以他们看起来像那样。
class Customer(models.Model):
....fields....
next_meeting = models.DateTimeField(blank=True, null=True)
class Meeting(models.Model):
....fields....
date = models.DateTimeField(auto_now_add = True)
customer = models.ForeignKey(Customer, related_name='meetings')
我希望 customer.next_meeting 字段包含所有下一次会议的最近日期。所以我在考虑做一个保存后的信号,它会占用会议的日期,并且
1. Check if customer.next_meeting is null (first meeting). If null set next_meeting to meeting.date
2. If not null check if meeting.date < customer.next_meeting. If true update customer.next_meeting
发布删除信号也必须这样做(如果会议被删除)。
1. get the most recent meeting after current date for customer using order_by('date')[0]
2. If meeting: update the next_meeting field, else(no meetings) leave blank.
这是正确的方法吗?如果您有很多会议为客户数据库方面昂贵,这听起来有点太“昂贵”。还是我弄错了?