両方が相互に参照するモジュールがある一般的なケースです。
たとえば、モジュールのユーザーと投稿。 ユーザーにはユーザーがいて、投稿には投稿と添付ファイルがあります
# users
class UserSerializer:
posts = PostSerializer()
profile_attachments = AttachmentSerializer()
#posts
class PostSerializer:
user = StringSerializer()
attachments = AttachmentSerializer()
class AttachmentSerializer:
name = CharField()
size = IntegerField()
Djangoには、循環依存を回避する外部キーを宣言する方法があり、参照されるモデルを文字列で宣言します。
profile_attachment = models.ForeignKey('posts.Attachment', on_delete=models.CASCADE)
DRFはシリアライザーにそのようなものを提供できますか? 何かのようなもの
profile_attachment = ModelSerializer(serializer='posts.AttachmentSerializer')
ですから、私が取り組んでいるプロジェクトでも実際に同じケースがありますが、実際にはそうすべきではありません。 ソフトウェアエンジニアリングとアーキテクチャのコースからのベストプラクティスは、一方向の依存関係を持つことです。 可能であれば少なくとも。 2つのアプリの間に非常に密接な関係がある場合は、1つのアプリであるか、共通の親を持つ必要があります。 必要に応じて、シリアライザーをサブアプリに移動することもできます。
私は間違っているかもしれませんが、それがベストプラクティスであるAFAIKです。
これが無限ループにならないことに驚いています。