既知のオブジェクトの参照を評価します。私もイベントにcan_join
メソッドを追加したいと思います:は、私はこれらの線に沿ってフィルタを持って
class Event(models.Model):
def is_joinable(self, current_time):
return self.join_time <= current_time & self.end_time >= current_time
しかし、私はここにロジックの重複を避けるしたいと思います(実際のロジックはもう少し複雑であり、おそらく変更されます)。 is_joinable
には、クエリを評価し、self
に合格するかどうかを判断する方法はありますか?あるいは、両方のメソッドを他のメソッドの上に書くことはできますか?もちろん、私は
query = Q(id=self.id) & joinable_query
return Event.objects.filter(query).exists()
ような何かを行うことができますが、それは、私はすでに私の手元に持っているレコードの無意味な余分なデータベースクエリを思わ。
これは非常に興味深いですが、「今」と非常に緊密に結びついています。そのため、オブジェクトの存続期間中に状態が変化すると(時間が経過し、これらのオブジェクトが非常に長く存続するセロリのタスクによって使用されるため)、更新されません。私は単体テストを非常に壊れやすいものにしているので、モデルが今のところ「今」を見ることを避けてきました。これは私がcurrent_timeをis_joinable関数に渡す理由です。しかし、非常に面白いアプローチです。 (たぶん、寿命の長いモデルのオブジェクトは、背中の背後で別の方法で変更される可能性があるため、問題です。) –
はい、私はそれを私の答えに書いています。どのように代替方法があるのか分かりません。クエリの一部としてデータベース内の値を計算するか、Pythonメソッドとしてのみ使用するか、ロジックを複製します。 –