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

السؤال

نشر

لدي نموذجين Models بالشكل التالي:

class Student(models.Model):
  name = models.CharField(max_length=255)
  favorite = models.ForeignKey("Favorite", blank=True, null=True)

  
class Favorite(models.Model):
  name = models.CharField(max_length=255)
  mystudent = models.ForeignKey(Student)

كيف أجعل الاختيارات الخاصة بالخاصية favorite لدى الطالب تقتصر فقط على العناصر المفضلة الخاصة بالطالب نفسه؟

حاولت أن أعدل الكود ليكون بالشكل التالي:

  favorite = models.ForeignKey("Favorite", blank=True, null=True, limit_choices_to = {"mystudent": "self"})

ولكن لم تنجح هذه الطريقة أبدًا، هل توجد طريقة جعل الاختيارات الخاصة بالخاصية favorite لدى الطالب تقتصر فقط على العناصر المفضلة الخاصة به في جانغو Django؟

Recommended Posts

  • 1
نشر (معدل)

بالبداية انت لديك علاقة بين student وFavorite

عند الاختيار وعرض الخيارات هو بالتأكيد سوف يعرض جميع الخيارات Favorite لأنه كيف سيتم عرض العناصر المفضلة الخاصة بالطالب وهو الطالب لم ينشئ بعد ! كما أرى انت منشئ علاقة ForignKey تشاركية عند ال student و Favorite

فالأفضل حذف العلاقة من جدول او model ال Favorite ووضع العلاقة manyTomany في model ال student

favorite = models.ManyToManyField("Favorite", blank=True, null=True)

في قواعد البيانات عند إنشاء علاقة manyTomany فإن Django في الخفاء في قاعدة البيانات سوف ينشئ جدول غير ظاهر  يوجد به " Id student : Id favorite " وهكذا سيصبح التعامل افضل لك بإضافة وجلب بيانات ال  Favorite الخاصة بكل student دون تعقيد .

ارجو ان تكون فهمت الفكرة.

تم التعديل في بواسطة Haroun Taha

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...