إنها حالة شائعة حيث يكون لديك وحدات حيث يشير كلاهما إلى بعضهما البعض.
على سبيل المثال ، وحدات المستخدمين والمشاركات. على المستخدمين لديك مستخدم وفي المنشورات لديك منشور ومرفق
# 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')
مرحبا mrodal!
تمكنت من تحقيق ذلك من خلال تنفيذ ما يلي في أحد المسلسلات "الدائرية": DRF: العلاقات العكسية
Django: متابعة العلاقات "إلى الوراء"
على الرغم من أنني أعتقد أنه معقد للغاية.
إذن لدي نفس الحالة في مشروع أعمل عليه ، لكن لا ينبغي عليك فعل ذلك. أفضل ممارسة ، من دورة هندسة البرمجيات والهندسة المعمارية هي أن يكون لديك تبعية في اتجاه واحد. إذا كان ذلك ممكنا على الأقل. إذا كان هناك اقتران وثيق جدًا بين التطبيقين ، فمن المحتمل أن يكونا تطبيقًا واحدًا ، أو بدلاً من ذلك يجب أن يكون لهما أحد الوالدين المشتركين. يمكنك أيضًا نقل جهاز التسلسل الخاص بك إلى تطبيق فرعي إذا كان ذلك ممكنًا.
قد أكون مخطئا ، ولكن AFAIK هذا هو أفضل ممارسة.
أنا مندهش من أن هذا لا ينتهي في حلقة لا نهائية.