مثيل Django ModelForm مع مجموعة استعلام مخصصة لحقل معين

StackOverflow https://stackoverflow.com/questions/1821289

  •  10-07-2019
  •  | 
  •  

سؤال

لدي نموذج لا يختلف عن ما يلي:

class Bike(models.Model):
    made_at = models.ForeignKey(Factory)
    added_on = models.DateField(auto_add_now=True)

يمكن لجميع المستخدمين العمل في عدد من المصانع، وبالتالي فإن ملفات تعريف المستخدمين الخاصة بهم جميعها تحتوي على ملف تعريف ManyToManyField ل Factory.

الآن أريد بناء ModelForm ل Bike ولكن أريد made_at قائمة تتكون من المصانع التي يعمل فيها المستخدم الحالي فقط.الفكرة هي أن المستخدمين يجب أن يكونوا قادرين على إضافة الدراجات التي قاموا بتجميعها والدخول إلى المصانع التي تم تصنيع الدراجة فيها.

كيف يمكنني فعل ذلك؟

هل كانت مفيدة؟

المحلول

قد يكون سؤالك أ خدع هذا.

س.لوتإجابة هناك تذكرة لحل مشكلتك.أجاب:

يتم تمثيل ExternalKey بواسطة django.forms.ModelChoiceField، وهو ChoiceField الذي تكون اختياراته عبارة عن نموذج QuerySet.راجع المرجع الخاص بـ ModelChoiceField.

لذا، قم بتوفير QuerySet لسمة queryset الخاصة بالحقل.يعتمد على كيفية بناء النموذج الخاص بك.إذا قمت بإنشاء نموذج واضح، فسيكون لديك حقول مسماة مباشرة.

form.rate.queryset = Rate.objects.filter(company_id=the_company.id)إذا أخذت كائن ModelForm الافتراضي، form.fields["rate"].queryset = ...

يتم ذلك بشكل صريح في العرض.لا القرصنة حولها.

نصائح أخرى

ومحاولة شيء مثل هذا في رأي

form  = BikeForm()
form.fields["made_at"].queryset = Factory.objects.filter(user__factory)

وتعديل مجموعة طلبات البحث مصنع بحيث يحدد المصنع الذي يعمل المستخدم في.

وNowaday، يجب عليك استخدام:

    form.base_fields['alumno_item'].queryset = AlumnoItem.objects.prefetch_related(
        'alumno',
        'alumno__estudiante',
        'alumno__estudiante__profile',
        'item'
    )
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top