Amer Abdallah نشر 25 أغسطس 2021 أرسل تقرير نشر 25 أغسطس 2021 ما هي فائدة related_name في حقول العلاقات مثل ManyToManyField و ForeignKey؟ على سبيل المثال، بالنظر إلى الكود التالي ، ما هو تأثير related_name='questions' على النموذج ككل وعلى العلاقة أيضًا؟ class Question(db.Model): answers = models.ManyToManyField(Answer, related_name='questions', verbose_name=_('answers')) 2 اقتباس
1 سامح أشرف نشر 25 أغسطس 2021 أرسل تقرير نشر 25 أغسطس 2021 تقوم الخاصية related_name بتحديد اسم العلاقة العكسية بين النموذج Answer و النموذج Question، وإذا لم تقم بتحديد هذه الخاصية سوف يقوم Django بتوليد اسم من خلال إضافة _set إلى اسم النموذج لتصبح النتيجة Answer.question_set على سبيل المثال، إذا كان لديك كائن مستخدم first_answer، فيمكنك استخدام first_answer.questions.all () للحصول على جميع مثيلات نموذج السؤال التي لها علاقة بالسؤال الأول. بالطبع بإمكانك إستخدامه بعده أشكال كعادة باقي العلاقات العادية: q = answer.questions.all().order_by('-creation_time') 1 اقتباس
0 Salah Eddin Beriani2 نشر 27 أغسطس 2021 أرسل تقرير نشر 27 أغسطس 2021 related_name أمر لا بد منه في حالة وجود اثنين ForeignKey في النموذج الذي يشير إلى نفس الجدول. على سبيل المثال في حالة فاتورة المواد @with_author class BOM(models.Model): name = models.CharField(max_length=200,null=True, blank=True) description = models.TextField(null=True, blank=True) tomaterial = models.ForeignKey(Material, related_name = 'tomaterial') frommaterial = models.ForeignKey(Material, related_name = 'frommaterial') creation_time = models.DateTimeField(auto_now_add=True, blank=True) quantity = models.DecimalField(max_digits=19, decimal_places=10) لذلك عندما يتعين عليك الوصول إلى هذه البيانات ، يمكنك فقط استخدام related_name bom = material.tomaterial.all().order_by('-creation_time') 1 اقتباس
السؤال
Amer Abdallah
ما هي فائدة related_name في حقول العلاقات مثل ManyToManyField و ForeignKey؟ على سبيل المثال، بالنظر إلى الكود التالي ، ما هو تأثير related_name='questions' على النموذج ككل وعلى العلاقة أيضًا؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.