Pregunta

Estoy totalmente la comprensión de la documentación relativa a la ampliación de la aplicación Comentarios en Django, y realmente me gustaría seguir con la funcionalidad automática y ...

En la aplicación actual, no tengo absolutamente ningún uso para una "URL" que se presentará junto con un comentario.

Siendo mínimamente invasiva de la configuración por defecto, ¿cómo puedo evitar que este campo de aparecer con el formulario de comentarios

Uso de Django 1, o en el maletero, y tantos / muebles empotrados genéricos como sea posible (las vistas genéricas, comentarios configuraciones de origen, etc. tener un solo punto de vista genérico envoltorio hasta el momento).

¿Fue útil?

Solución

Esto está bien documentado bajo personalización del marco comentarios .

Toda su aplicación va a utilizar es get_form, volviendo una subclase de la CommentForm con el campo URL reventado. Algo así como:

class NoURLCommentForm(CommentForm):
    """
    A comment form which matches the default djanago.contrib.comments one, but
    doesn't have a URL field.

    """
NoURLCommentForm.base_fields.pop('url')

Otros consejos

No puedo hacer comentarios sobre el poste SmileyChris' por alguna razón, así que voy a publicar aquí. Sin embargo, me encontré con errores utilizando simplemente la respuesta SmileyChris'. También hay que sobrescribir la función get_comment_create_data porque CommentForm se va a buscar a esas llaves Mensaje que ha extraído. Así que aquí está mi código después quité tres campos.

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')

Esta es la función que va a sobrescribir

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,
    )

Mi solución rápida y sucia: Me hizo el del 'e-mail' y los campos 'URL' campos ocultos, con un valor arbitrario para deshacerse de los errores 'Este campo es obligatorio'

.

No es elegante, pero es rápido y no tuve subclase CommentForm. Todo el trabajo de los comentarios adición se hizo en la plantilla, que es agradable. Parece que este (advertencia: no ensayado, ya que es una versión simplificada de mi código real):

{% get_comment_form for entry as form %}

<form action="{% comment_form_target %}" method="post"> {% csrf_token %}

{% for field in form %}

    {% if field.name != 'email' and field.name != 'url' %}
        <p> {{field.label}} {{field}} </p>
    {% endif %}

{% endfor %}

    <input type="hidden" name="email" value="foo@foo.foo" />
    <input type="hidden" name="url" value="http://www.foofoo.com" />

    <input type="hidden" name="next" value='{{BASE_URL}}thanks_for_your_comment/' />
    <input type="submit" name="post" class="submit-post" value="Post">
</form>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top