問題
User
オブジェクトとオブジェクトを持つアプリケーションがありStudent
ます。一部のユーザーは学生です。すべての生徒がユーザーです。データベース (django-ORM ベース) では、これはStudent
テーブルへの外部キーを持つテーブルとして表されUser
ます。
REST API と、この API をモデル化する iOS アプリのオブジェクト階層を作成しようとしています。これをモデル化する方法を決定するのに問題があります。
現在のソリューション
私が思いついた最高のものは次のとおりです。iOSにモデルUser
を持ち、iOSにStudent
モデルを継承しUser
、それをより多くのプロパティで拡張します。次に、サーバーから JSON 応答を受信し、辞書に応じてa またはモデルを作成するメソッドを用意します。User
Student
最後に、サーバーは常に最も具体的なタイプを提供する必要があります。つまり、サーバーにログインすると、サーバーは私が学生か通常のユーザーかを判断し、適切な辞書を返します。
これが最善の方法ですか?
これは少し複雑に聞こえます。しかし、データベースのレイアウト方法を変更するなど、モデル化について私が考えた他の方法では、データベースがすべての制約を認識していない設計が得られます。たとえば、Student
オブジェクトは他のオブジェクトを所有できます (例: homework_paper
)。User
オブジェクトではなく、オブジェクトへの外部キーでこれをモデル化できます。これは、単にユーザーの拡張であるStudent
と言えます。しかし、データベースは、 a が学生によって所有されなければStudent
ならないという事実を強制しません。homework_paper
私が見逃しているこの問題を解決するより良い方法はありますか?