اذهب إلى المحتوى

السؤال

نشر

ما هي فائدة related_name في حقول العلاقات مثل ManyToManyField و ForeignKey؟ على سبيل المثال، بالنظر إلى الكود التالي ، ما هو تأثير related_name='questions' على النموذج ككل وعلى العلاقة أيضًا؟

class Question(db.Model):
    answers = models.ManyToManyField(Answer, related_name='questions', verbose_name=_('answers'))

 

Recommended Posts

  • 1
نشر

تقوم الخاصية related_name  بتحديد اسم العلاقة العكسية بين النموذج Answer و النموذج Question، وإذا لم تقم بتحديد هذه الخاصية سوف يقوم Django بتوليد اسم من خلال إضافة _set إلى اسم النموذج لتصبح النتيجة Answer.question_set

على سبيل المثال، إذا كان لديك كائن مستخدم first_answer، فيمكنك استخدام first_answer.questions.all () للحصول على جميع مثيلات نموذج السؤال التي لها علاقة بالسؤال الأول.

بالطبع بإمكانك إستخدامه بعده أشكال كعادة باقي العلاقات العادية:

q = answer.questions.all().order_by('-creation_time')

 

  • 0
نشر

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')

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...