私にはモデルがあり、顧客と言えます。そして、その顧客にフィールドを追加したいのですが、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.
これは正しい方法ですか。顧客データベース側の費用がかかるため、多くの会議がある場合、それは少し「費用がかかる」ように聞こえます。それとも私は間違っていますか?