2011-07-05 13 views
9

Mam szablon o nazwie client_details.html, który wyświetla user, note i datetime. Czasami klient może nie mieć wpisu dla użytkownika, notatki i daty. Zamiast tego mój program wyświetli None, jeśli te pola są puste. Nie chcę wyświetlać Brak. Jeśli pole nie ma wartości, nie chcę widzieć żadnej wartości, np. niech będzie puste, jeśli to możliwe, zamiast wyświetlać Brak.Django: Chcesz wyświetlić puste pole jako puste zamiast wyświetlania

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

szablon

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

Odpowiedz

3

można użyć:

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

Sprawdzanie ze związkiem jeśli I Wystarczy, że nie możesz zablokować innego użytkownika, jeśli chcesz ...

59

Użyj wbudowanego filtra default_if_none.

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

Istnieje także filtr 'default', ale' default_if_none' jest bardziej szczegółowy. Jeśli masz do czynienia z instancjami modelu dla tych rzeczy, to wszystko będzie miało to samo. –

4

to jest taki dziwny problem. Mam dobry pomysł na to. Jeśli chcesz zmodyfikować swoje pole w czasie wyświetlania, a nie sprawdzać go w szablonie, sprawdź go na swojej klasie modelu.

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

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

Użyj go w swoim szablonie bezpośrednio zamiast pola.

{{ExampleModel.get_myfield}} 

Nigdy nie musisz zmieniać szablonu, aby zmienić to pole w przyszłości, wystarczy zmodyfikować własność.

Powiązane problemy