Ich kann den Beitrag von SmileyChris aus irgendeinem Grund nicht kommentieren, also werde ich es hier posten. Aber ich habe Fehler mit nur SmileyChris 'Antwort bekommen. Sie müssen auch die Funktion get_comment_create_data überschreiben, da CommentForm nach den gesperrten Post-Schlüsseln sucht. Also hier ist mein Code, nachdem ich drei Felder entfernt habe.
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')
Dies ist die Funktion, die Sie
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,
)
Ich stimme der Dokumentation ist sehr gut, aber ich habe zu argumentieren, dass auf „base_fields“ meinen Weg zu finden und verwenden. Pop() war nicht etwas, das ich gerne gesehen habe. Ja, der Kommentarrahmen ist gut dokumentiert, aber "das" nicht. Ich stimme zu, dass es meine Verantwortung ist, solche Dinge zu finden, und ich bin sehr dankbar für Ihre Zeit und Unterstützung! Dank bro! –
Dies wirft Fehler in Django 1.4. Sie müssen auch die Methode get_comment_create_data überschreiben, wie in der Lösung von Killerbarney erwähnt. –