Mohssen A Mohssen نشر 23 يونيو 2022 أرسل تقرير نشر 23 يونيو 2022 لدي نموذجين 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؟ 1 اقتباس
1 Haroun Taha نشر 23 يونيو 2022 أرسل تقرير نشر 23 يونيو 2022 (معدل) بالبداية انت لديك علاقة بين 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 دون تعقيد . ارجو ان تكون فهمت الفكرة. تم التعديل في 23 يونيو 2022 بواسطة Haroun Taha اقتباس
السؤال
Mohssen A Mohssen
لدي نموذجين Models بالشكل التالي:
كيف أجعل الاختيارات الخاصة بالخاصية favorite لدى الطالب تقتصر فقط على العناصر المفضلة الخاصة بالطالب نفسه؟
حاولت أن أعدل الكود ليكون بالشكل التالي:
ولكن لم تنجح هذه الطريقة أبدًا، هل توجد طريقة جعل الاختيارات الخاصة بالخاصية favorite لدى الطالب تقتصر فقط على العناصر المفضلة الخاصة به في جانغو Django؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.