Come posso impostare un valore iniziale di un campo nel modulo generato automaticamente per aggiungere un'istanza di modello Django, prima che venga visualizzato il modulo? Sto usando Django 1.3.1.Come impostare i dati iniziali per il modulo di istanza di Django admin model?
Il mio modello è la seguente:
class Foo(models.Model):
title = models.CharField(max_length=50)
description = models.TextField()
e la forma di amministrazione corrente è davvero niente di speciale
class FooAdmin(admin.ModelAdmin):
ordering = ('title',)
Quando uso la pagina di amministrazione per aggiungere una nuova istanza di Foo, ho un bel modulo con campi vuoti per titolo e descrizione. Quello che vorrei è che il campo descrizione sia impostato con un modello che ottengo chiamando una funzione.
Il mio attuale miglior tentativo di arrivare è questo:
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
ma se provo questo ottengo questo errore Django:
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
Non so cosa c'è di sbagliato qui, e cosa dovrei fare per farlo funzionare. Quello che trovo strano anche a questo errore (a parte il fatto che lo vedo) è che non c'è affatto FooForm nel mio codice?
Wow, che ha lavorato come un fascino! Messaggio incredibilmente criptico a proposito di un errore così stupido ... Grazie mille per il vostro aiuto! –
A proposito, ho anche provato con successo il tuo secondo suggerimento, che è ancora più pulito, quindi grazie ancora! –
Ho trovato che l'impostazione di kwargs ['initial'] ha causato un errore durante il salvataggio del modulo. Avevo impostare una clausola if: se 'iniziale' in kwargs.keys():.. kwargs aggiornamento [ 'iniziale'] (... Questo ha funzionato per la visualizzazione dei valori iniziali e li aggiorna – Sven