The problem is I have a model called Gift. And it has a boolean field 'giftbought' that I want to hide in admin interface when the object is being created and show it when it is being updated.
I tryed making a form, overriding init method like:
class GiftForm(forms.ModelForm):
    giftbought = forms.BooleanField(label=u"Bought?", required=False)
    class Meta:
        model = Gift
    def __init__(self, *args, **kwargs):
        super(GiftForm, self).__init__(*args, **kwargs)
        if not self.instance.pk:
            del self.fields['giftbought']
But it doesn't work for admin, like it is being said in: Remove fields from ModelForm
I thing I needed to make a class ModelAdmin, overriding get_form method, but I don't know how to check if I is_instance or not...
It would be something like:
class GiftAdmin(admin.ModelAdmin):
    model = Gift
    def get_form(self, request, obj=None, **kwargs):
        # that IF doesnt work!!!
        if not self.instance.pk:
            self.exclude = ('giftbought',)
        return super(GiftAdmin, self).get_form(request, obj=None, **kwargs)
admin.site.register(Gift, GiftAdmin)
Any hint?