2013-08-02 74 views
1

車型

class VideoInfo(models.Model): 
    user = models.ForeignKey(User) 
    video_name = models.CharField(max_length=200) 
    director = models.CharField(max_length=200) 
    cameraman = models.CharField(max_length=200) 
    editor = models.CharField(max_length=200) 
    reporter = models.CharField(max_length=200) 
    tag = models.TextField() 

形式

class LoginForm(forms.Form): 
    username = forms.CharField(max_length=50) 
    password = forms.CharField(widget=PasswordInput()) 


class VideoInfoForm(forms.Form): 

    class Meta: 
     model = VideoInfo 
     fields = ['video_type', 'director', 'cameraman', 'editor', 'reporter', 'tag'] 

瀏覽:

class Main(View): 
    '''Index page of application''' 
    def get(self, request): 
     model = VideoInfo 
     form = VideoInfoForm() 
     return render_to_response('main.html', {'form':form}, context_instance=RequestContext(request)) 

模板調用爲:ModelForm沒有出現在Django模板中?

{{form.as_p}} 

形式沒有顯示出來,但如果我用LoginForm它顯示出來。我究竟做錯了什麼?

+0

您需要從ModelForm繼承第二種形式,請仔細閱讀文檔。 – mariodev

+0

是的,對不起,夥計們。 – pynovice

回答

2

變化:

class VideoInfoForm(forms.Form): 

要:

class VideoInfoForm(forms.ModelForm): 
1

當你要使用模型的形式,你的窗體的定義是不正確的。

變化

class VideoInfoForm(forms.Form): 

class VideoInfoForm(forms.ModelForm): 
#  ------------------^ use ModelForm not Form 

旁註:

代替fields使用一長串的exclude只列出不需要的領域。

class VideoInfoForm(forms.ModelForm): 
    class Meta: 
     model = VideoInfo 
     exclude = ['user',]