You are here

Django Beispielprojekt Teil 4 - Anpassung Layout

Festlegung der Pflichtfelder

Bei der Eingabe von Adressen haben Sie sicherlich festgestellt, dass alle Felder Pflichtfelder sind. In der Praxis ist das aber eher selten der Fall. Daher sollten wir uns jetzt überlegen, welche Felder tatsächlich immer ausgefüllt sein sollten. Bei einer Adressdatenbank macht es Sinn, den Namen als Pflichtfeld zu definieren.

Außerdem soll der Geburtstag als Pflichtfeld definiert sein. Wir werden daher die Felder "Lastname" , "Firstname" und "Birthday" als Pflichtfelder belassen und für die anderen Felder diese Eigenschaft deaktivieren.  Dazu muss wieder das Datenmodell (also die Datei "model.py" im Verzeichnis "adresses") bearbeitet werden.

Ob ein Feld Plichtfeld ist oder nicht, wird über die Eigenschaft "blank" definiert. Standardmäßig ist diese Eigenschaft auf FALSE gesetzt. Dementsprechend müssen wir diese Eigenschaft für optionale Felder auf TRUE setzen. Für Nicht-String Felder (z.B. Datum) muss zusätzlich die Eigenschaft null=true gesetzt werden. Siehe dazu auch: http://docs.djangoproject.com/en/dev/ref/models/fields/#null

Das Model muss dazu wie folgt geändert werden:

from django.db import models

class Adress(models.Model):
    lastname= models.CharField(max_length=30)
    firstname = models.CharField(max_length=20)
    phone=models.CharField(max_length=30,blank=True)
    areacode=models.CharField(max_length=10,blank=True)
    birthday=models.DateField()
    location=models.CharField(max_length=50,blank=True)
    street=models.CharField(max_length=50,blank=True)
    zipcode=models.CharField(max_length=5,blank=True)
    mail=models.EmailField(blank=True)


Damit diese Änderungen übernommen werden, muss die Datenbank wiede aktualisiert werden mit dem bereits bekannten Befehl:

python manage.py syncdb

Nach einem Neustart des Servers über

python manage.py runserver

werden in der Eingabemaske für Adressen die Pflichtfelder fett dargestellt.

Anpassung des Layouts der Ergebnisliste

Um die Ergebnisliste anzupassen, muss die Datei admin.py im Verzeichnis adresses geändert werden. Zunächst wird eine neue Klasse AdressAdmin eingeführt, in der die Methode list_display, die in der Admin-Klasse für die Darstellung der Ergebnisliste verwendet wird überschrieben wird. Hier wird definiert, welche Felder in der Ergebnisliste gezeigt werden sollen.

Damit diese Änderung auch übernommen wird, muss die Klasse noch registriert werden. Das geschieht über den Eintrag admin.site.register(Adress,AdressAdmin). Die Datei admin.py sollte jetzt so aussehen:

from myadress.adresses.models import Adress
from django.contrib import admin

class AdressAdmin(admin.ModelAdmin):
    list_display=('lastname','firstname','zipcode','location','street')
    

admin.site.register(Adress,AdressAdmin)

Die Ergebnisliste sollte jetzt so aussehen:

AddThis: 

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer