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

ما هي فائدة related_name في حقول النموذج في جانغو Django؟

Amer Abdallah

السؤال

ما هي فائدة 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...