私は現在、既存のカレンダーアプリケーションにDjangoインターフェースを実装するプロジェクトに取り組んでいます。カレンダーアプリケーションには、バックエンドDBとしてMySQLがあります。
カスタムアプリケーションでは、既存のカレンダーアプリケーションで使用されているテーブルの1つでデータを変更/拡張したいと思います。
# Auto-generated by inspectdb - table used by calendar application
class CalendarEvent(models.Model:)
name = models.CharField(max_length=80)
start_time = models.DateTimeField()
end_time = models.DateTimeField()
# Manually created table
class CustomCalendarEvent(models.Model:)
code = models.CharField(max_length=80) # Mapped from name
length = models.DateTimeField() # start_time - stop_time
.... additional data ....
また、データの表現を既存のカレンダーテーブルと同期させたままにします。つまり、カレンダーアプリケーションで新しいエントリが作成されると、これらは自動的にカスタムテーブルに伝播されます。
これを行うためのいくつかの明白な方法(たとえば、cronまたはMySQLトリガーによって開始される同期スクリプト)を考えることができますが、これらのソリューションが特に洗練されているとは感じません。
1つの可能性は、CustomCalendarEventにカスタムマネージャーを使用し、 get_query_set関数をオーバーライドして、同期関数もトリガーすることです。
これはDjangoCustomManagersの合法的な使用ですか?そうでない場合、誰かがこの問題の代替アプローチを推奨できますか?