سؤال

مشكلة غريبة في جانغو مع أشكال:

ولقد لForm.class محددة مثل هذا ...

class MeetingForm(forms.Form):
    owner = forms.ModelChoiceField(
            queryset=Profile.objects.all(),
            widget=forms.HiddenInput() )
    date = forms.DateTimeField()
    name = forms.CharField(max_length=30)
    etc.

وأنا إنشاء مثيلات جديدة من خلال استدعاء دالة مثل هذا ...

def newMeetingForm(request,profile) :
    mf = MeetingForm( {
        'date' : date.today(),        
        } )
    return mf

والذي يعمل كما هو متوقع. إلا أن "مالك" -field الاجتماع فارغ. ما أعتقد أنني يجب القيام به هو قبل ملء حقل المالك في newMeetingForm مثل هذا:

def newMeetingForm(request,profile) :
    mf = MeetingForm( {
        'date' : date.today(),
        'owner' : profile,
        } )
    return mf

وحيث الحجة "لمحة" هو كائن الملف.

عند تشغيل هذه، ومع ذلك، فإن النموذج لا تجعل.

وأنا أستخدم هذا في القالب:

{{ form.as_p }}

ولكن مع هذا الخط الاضافي 'مالك' في newMeetingForm يبدو حرفيا للخروج باعتبارها سلسلة فارغة. وأفترض أن بطريقة ما انها فشل بصمت، ربما تحاول ModelChoiceField لتقديم قيمة مالك أنني مملوءة مسبقا معها. لكن القيم تبدو موافق. إذا ماذا يجب أن أكون تبحث عنه؟

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

المحلول

والتعليمات البرمجية يبدو الصحيح، متحدثا إلى حد كبير. أنا فعلا يدير مشروع "كعب" على الجهاز الخاص بي باستخدام نموذج وشكل إنشاء كود لديك، وكانت النتائج ناجحة (باعتراف الجميع، خمنت في ما قد تبدو نموذجا الملف مثل).

وشيء واحد للنظر، على الرغم من أنه لن يؤثر تقديم، والتي يجب أن تكون instantiating في MeetingForm مع القاموس عن بيانات initial. إذا كنت تمر أنها أول حجة الموضعية، سوف جانغو تفترض تقصد لتلك البيانات إلى أن تكون البيانات وظيفة، وبالتالي يجب التحقق من صحة النموذج. (الاعتذار إذا كنت تعرف هذا، وحيث مجرد القصير القطع لأغراض يطرح هذا السؤال).

وغالبا ما أجد أن وجهات النظر جانغو ابتلاع الأخطاء الهامة. لاختبار النموذج الخاص بك محاولة القيام بذلك في جانغو قذيفة:

$ python manage.py shell
>>> from blah.models import Profile
>>> from blah.forms import MeetingForm
>>> from datetime import date
>>> p = Profile.objects.get(id=someid)
>>> mf = MeetingForm(initial={'date':date.today(), 'owner':p})
>>> print mf.as_p()

وهذا سوف يظهر شكل، وإذا كان هناك انفجارات خطيرة، الأخطاء كذلك.

وأيضا، وأنا أعلم أن هذا هو سخيف ولكن أنا قد فعلت مثل هذه الاشياء :-) جدا (مجموعة إضافية من العيون ... الخ ...)، هل أنت متأكد أنك تمرير 'شكل' المتغير ل في سياق تقديم القالب؟ وأن المتغير يسمى "شكل" وليس "MF" أو شيء من هذا القبيل؟

وعلى أمل أن يساعد

نصائح أخرى

هل أنت متأكد أنك تمر مثيل الفعلي للالملف إلى newMeetingForm؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top