如何在Django中使用内置标记“comments”来获取自定义表单

时间:2012-09-14 09:02:32

标签: django django-forms django-templates

我创建了一个带有自定义字段的评论应用,例如“parentId”和“email_notification”。 在模板中,comments标记可以提取我添加的项目,但“get_comment_form”标记不显示表单。另外,如何自定义该表单中的字段?

models.py

from django.db import models
from django.contrib.comments.models import Comment

class CommentWithParent(Comment):
    parentId = models.IntegerField(default = 0)
    email_notification = models.BooleanField(default = False)

forms.py

from django import forms
from django.contrib.comments.forms import CommentForm
from mblog.my_comment.models import CommentWithParent
from django.db import models


class CommentWithParentForm(CommentForm):

    parentId = models.IntegerField(default = 0)
    email_notification = models.BooleanField(default = False)

    def get_comment_model(self):
        return CommentWithParent

    def get_comment_create_data(self):
        data = super(CommentWithParentForm, self).get_comment_create_data()
        return data

    def get_form(self):
        return self

模板文件

{% load comments %}
{% get_comment_form for entry as form %}

1 个答案:

答案 0 :(得分:0)

您可以在the documentation中了解有关自定义表单模板的详情。一般而言,您可以隐藏表单中的某些字段或控制使用哪些表单窗口小部件来显示它们。要改变它们的外观,您需要使用应用程序的CSS,或者根据文档描述创建一个新模板。

我不完全确定为什么get_comment_form代码不适合你。上面链接的文档建议您在视图中需要一个表单,然后模板可以使用不同的标记进行呈现; here's that section文档。如果您不使用Django 1.4,情况可能略有不同。