2016-04-05 78 views
2

假設我有一個博客條目和URL是/blog/1,現在我想評論博客帖子,所以我點擊了網址/comment/1。在Django中,該urls.py看起來像使用UpdateView添加博客文章的評論

urlpatterns = (
    url(r'^blog/(?P<pk>[0-9])',BlogView.as_view()) 
    url(r'^comment/(?P<pk>[0-9])',CommentView.as_view() 
) 

models.py就像

class Blog(models.Model): 
    text = models.TextField() 

class Comment(models.Model): 
    comment_text = models.TextField() 
    for_blog = models.ForeignKey(Blog) 

所以現在我有forms.py

class CommentForm(forms.ModelForm): 
    for_blog = forms.IntegerField(required=True) 
    def __init__(self, blog, *args, **kwargs): 
    . 
    . 
    class Meta: 
    model=Comment 

問題是一個CommentForm,如何實現這在Django的UpdateView中?特別是,我希望CommentForm中的for_blog預填充BlogID,以便我可以更輕鬆地使用它。

回答

0

爲了回答您的實際問題,使用CommentForm,定義在Meta類中的字段(不需要其他任何東西):

class CommentForm(forms.ModelForm): 

    class Meta: 

    model=Comment 
    fields = ['for_blog'] 

那麼在你看來,這樣做:

class ClassView(UpdateView): 

    def get(self, request, pk, ...): 

    blog = get_object_or_404(Blog, pk) 
    forms = [CommentForm(instance=comment) for comment in blog.comment_set.all()] 
    return render(request, 'template.html', {'forms': forms}) 
0

我會使用一個formset(https://docs.djangoproject.com/en/dev/topics/forms/formsets/)。然後,您可以使用pk加載博客對象,並將其作爲0123set在formset中傳遞。然後,只需在模板中呈現formset,即可獲得關聯的博客評論。

此外,還可以輕鬆添加更多/刪除評論和便利的表單管理。