Wie kann ich einen Anfangswert eines Felds im automatisch generierten Formular zum Hinzufügen einer Django-Modellinstanz festlegen, bevor das Formular angezeigt wird? Ich benutze Django 1.3.1.Wie setze ich Anfangsdaten für das Django Admin Model ein?
Mein Modell ist folgende:
class Foo(models.Model):
title = models.CharField(max_length=50)
description = models.TextField()
und die aktuelle Admin-Form ist wirklich nichts Besonderes
class FooAdmin(admin.ModelAdmin):
ordering = ('title',)
Wenn ich die Admin-Seite verwenden, um eine neue Instanz von Foo hinzuzufügen, erhalte ich eine schöne Form mit leeren Feldern für Titel und Beschreibung. Was ich möchte, ist, dass das Beschreibungsfeld mit einer Vorlage eingestellt ist, die ich durch den Aufruf einer Funktion erhalte.
Mein aktueller besten Versuch bekommen, gibt es dies:
def get_default_content():
return 'this is a template for a Foo description'
class FooAdminForm(django.forms.ModelForm):
class Meta:
model = Foo
def __init__(self, *args, **kwargs):
kwargs['initial'].update({'description': get_default_content()})
super(FooAdminForm, self).__init__(self, *args, **kwargs)
class FooAdmin(admin.ModelAdmin):
ordering = ('title',)
form = FooAdminForm
aber wenn ich das versuche ich diesen Django Fehler:
AttributeError at /admin/bar/foo/add/
'FooForm' object has no attribute 'get'
Request Method: GET
Request URL: http://localhost:8000/admin/bar/foo/add/
Django Version: 1.3.1
Exception Type: AttributeError
Exception Value: 'FooForm' object has no attribute 'get'
Exception Location: /www/django-site/venv/lib/python2.6/site-packages/django/forms/widgets.py in value_from_datadict, line 178
Ich weiß nicht, was hier falsch ist, und Was sollte ich tun, damit es funktioniert? Was ich auch an diesem Fehler (abgesehen von der Tatsache, dass ich es überhaupt sehe) seltsam finde, ist, dass es in meinem Code überhaupt kein FooForm gibt?
Wow, das wie ein Charme! Awesome kryptische Nachricht übrigens für so einen dummen Fehler ... Vielen Dank für Ihre Hilfe! –
Übrigens habe ich auch deinen zweiten Vorschlag erfolgreich versucht, der ist noch sauberer, also nochmals Danke! –
Ich habe festgestellt, dass die Einstellung kwargs ['initial'] beim Speichern des Formulars einen Fehler verursacht hat. Ich hatte eine if-Klausel festgelegt: wenn 'Initiale' in kwargs.keys():.. kwargs [ 'initial'] Update (... Dies funktionierte die Anfangswerte für die Anzeige und die Aktualisierung sie – Sven