How can I create a fully hidden field (input and label) in the admin site?
I know about the exclude
property, but it fully excludes the field from the template, while I need it in the web page, but hidden:
class OutForm(ModelForm):
reply_to = forms.ModelChoiceField(queryset=InMessages.objects.all(), widget=forms.HiddenInput)
In the admin template I actually can hide a field, but not its label.
The Django admin does not support hidden fields yet. There is an open ticket for that: https://code.djangoproject.com/ticket/11277
However, there are workarounds that don't require jQuery. The admin forms are rendered using
admin/includes/fieldset.html
. If you override this template, you can inject a CSS class to denote the row for hiding:this is actually a single line in the file, I've expanded it to make it more readable.
( Neat detail: for an StackedInline/TabularInline objects, you can specify the template as variable in Python code. )
Next, you can hide that row in your CSS:
Which you can load via your admin page:
or by using the media definition in the modeladmin:
You're giving ModelForm in your example, not ModelAdmin you should be using for admin site.
Anyway, method of excluding some field is the same: specify it in
exclude
property:or
See Django documentation for details: http://docs.djangoproject.com/en/1.2/ref/contrib/admin/
Try adding label="" to your ModelChoiceField to make the label an empty string:
I found it quite handy to use the 'classes' attribute in fieldsets to hide fields but still leave them in a request. In your model admin you can write
In the template, while displaying
It will hide the hidden field labels.