Come fare un campo in Django Admin sola lettura o non modificabile in base al valore di un altro campo? Ho usato readonly_fields=('amount',)
ma questo voleva risolvere il mio problema, come ho bisogno di gestirlo in base a un altro campo.Fare un campo di sola lettura in Django Admin, in base al valore di un altro campo
10
A
risposta
17
è possibile ignorare get_readonly_fields
il metodo del admin:
class MyAdmin(admin.ModelAdmin):
def get_readonly_fields(self, request, obj=None):
if obj and obj.another_field == 'cant_change_amount':
return self.readonly_fields + ('amount',)
return self.readonly_fields
0
Per la compilazione di un campo da un altro, è necessario aggiungere un attributo prepopulated_fields
alla relativa classe di ModelAdmin
. Ad esempio:
class PostAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("title",)}
La documentazione pertinente è disponibile here.
Tuttavia, nella versione di django che sto usando al momento (1.3), questo sembra creare un errore quando viene utilizzato anche readonly_fields
.
0
dichiarare qualsiasi readonly_fields in modo permanente nel corpo della classe, come l'attributo readonly_fields classe sarà accessibile da validazione
Questo può essere fatto pur mantenendo inalterata l'ordinamento campo? –