if not self.instance.is_virtual:
ServerAdminForm.host = django.db.models.ForeignKey(u'self', blank=True, null=True)
ServerAdminForm.base_fields['host'] = ServerAdminForm.host
If not, you can create or modify your form dynamically using base_fields in __init__:
Thanks. I will look into that tomorrow when I get to work. Any ideas on why the html of the field does not have the attributes disabled or readonly?