나는 어떤 이유로 SmileyChris의 게시물에 댓글을 달 수 없으므로 여기에 게시하겠습니다. 그러나 SmileyChris의 응답을 사용하여 오류가 발생했습니다. CommentForm은 제거한 포스트 키를 찾기 때문에 get_comment_create_data 함수를 덮어 써야한다. 그래서 여기에 세 개의 필드를 제거한 후 코드가 있습니다.
class SlimCommentForm(CommentForm):
"""
A comment form which matches the default djanago.contrib.comments one, but with 3 removed fields
"""
def get_comment_create_data(self):
# Use the data of the superclass, and remove extra fields
return dict(
content_type = ContentType.objects.get_for_model(self.target_object),
object_pk = force_unicode(self.target_object._get_pk_val()),
comment = self.cleaned_data["comment"],
submit_date = datetime.datetime.now(),
site_id = settings.SITE_ID,
is_public = True,
is_removed = False,
)
SlimCommentForm.base_fields.pop('url')
SlimCommentForm.base_fields.pop('email')
SlimCommentForm.base_fields.pop('name')
이
는
def get_comment_create_data(self):
"""
Returns the dict of data to be used to create a comment. Subclasses in
custom comment apps that override get_comment_model can override this
method to add extra fields onto a custom comment model.
"""
return dict(
content_type = ContentType.objects.get_for_model(self.target_object),
object_pk = force_unicode(self.target_object._get_pk_val()),
user_name = self.cleaned_data["name"],
user_email = self.cleaned_data["email"],
user_url = self.cleaned_data["url"],
comment = self.cleaned_data["comment"],
submit_date = datetime.datetime.now(),
site_id = settings.SITE_ID,
is_public = True,
is_removed = False,
)
문서가 훌륭하다고 나는 동의하지만 "base_fields"로가는 길을 찾고 사용하는 것으로 논해야합니다. pop()은 내가 쉽게 접하게 된 것이 아니었다. 예, 댓글 프레임 워크는 잘 문서화되어 있지만 "이"는 아닙니다. 나는 그런 일을하는 것이 내 책임이라는 데 동의하며, 나는 당신의 시간과 도움에 대해 대단히 감사합니다! 감사합니다 형! –
이렇게하면 Django 1.4에서 오류가 발생합니다. killerbarney의 솔루션에서 언급 한 것처럼 get_comment_create_data 메서드를 재정의해야합니다. –