2011-07-05 22 views
9

Tengo una plantilla llamada client_details.html que muestra user, note y datetime. Ahora, a veces, un cliente puede no tener una entrada para usuario, nota y fecha y hora. Lo que hará mi programa en su lugar es mostrar None si estos campos están vacíos. No quiero que se muestre None. Si un campo no tiene valor, no quiero ver ningún valor, p. deje que esté en blanco si es posible en lugar de mostrar None.Django: desea mostrar un campo vacío en blanco en lugar de mostrar Ninguno

views.py

@login_required 
def get_client(request, client_id = 0): 
    client = None 
    try: 
     client = models.Client.objects.get(pk = client_id) 
    except: 
     pass 
    return render_to_response('client_details.html', {'client':client}, context_instance = RequestContext(request)) 

plantilla

{{client.datetime}}<br/> 
{{client.datetime.time}}<br/> 
{{client.user}}<br/> 
{{client.note}}<br/> 

Respuesta

3

puede usar:

{% if client %} {{client.user}} {% else %} &nbsp; {% endif %} 

Comprobación con una si i s suficiente, por lo que no puede bloquear el usuario si lo desea ...

59

Utilice el filtro incorporado default_if_none.

{{ client.user|default_if_none:"&nbsp;" }} 
{{ client.user|default_if_none:"" }} 
+1

También está el filtro 'predeterminado', pero' default_if_none' es más específico. Si se trata de instancias de modelos para estas cosas, entonces todo vendrá a ser lo mismo. –

4

este es un problema tan extraño. Tengo una buena idea para eso. Si desea modificar su campo en el momento de la visualización en lugar de verificarlo en la plantilla, verifíquelo en su clase de modelo.

ExampleModel(models.Model): 
    myfield = models.CharField(blank=True, null = True) 

    @property 
    def get_myfield(self) 
     if self.myfield: 
       return self.myfield 
     else: 
       return "" 

Úselo directamente en su plantilla en lugar de en el campo.

{{ExampleModel.get_myfield}} 

No necesita cambiar su plantilla para cambiar este campo en el futuro, solo modifique su propiedad.

Cuestiones relacionadas