figured out how to do it using the get_form method like this:

class AccessoryStockOrderAdmin(admin.ModelAdmin):
    form = AccessoryStockOrderForm
    def get_form(self, request, obj=None, **kwargs):
        form = super(AccessoryStockOrderAdmin, self).get_form(request,
obj, **kwargs)
        if obj == None:
            del form.base_fields['cancelled']
    return form

On 28 Feb, 13:00, Simon Davies <simon...@gmail.com> wrote:
> Hi
>
> I have a model which I access from the admin application.  I want to
> exclude some fields dynamically.
>
> My model looks like this:
>
> class StockOrder(models.Model):
>         number_of_items_pending_order =
> models.PositiveIntegerField(max_length=5, default=1)
>         number_of_items_ordered = models.PositiveIntegerField(max_length=5,
> default=1)
>         number_of_items_delivered = models.PositiveIntegerField(max_length=5,
> default=1)
>         order_date = models.DateTimeField(auto_now_add=True,
> verbose_name=u'Date ordered')
>         confirmed = models.BooleanField(default=False)
>         confirmed_date = models.DateTimeField(verbose_name=u'Date confirmed',
> null=True, blank=True)
>         cancelled = models.BooleanField(default=False)
>         cancel_date = models.DateTimeField(verbose_name=u'Date cancelled',
> null=True, blank=True)
>         completed = models.BooleanField(default=False)
>         completion_date = models.DateTimeField(verbose_name=u'Date
> completion', null=True, blank=True)
>
> I want to exclude some fields depending on the state of others.  So if
> completed is True I don't want to see the confirmed or cancelled
> flags.
>
> The options to exclude fields I understand are:
>
> 1: ModelAdmin.exclude attribute  in admin.py.  I can't see how this
> can be manipulated dynamically however.
>
> 2.  I create my own Modelform and set the form attribute in admin.py
> to the modelform, the modelform will look something like this:
>
> class StockOrderForm(ModelForm):
>     class Meta:
>         model = StockOrder
>         exclude = ('cancelled',)
>
> However I run into the same problem as in 1, how can I manipulate the
> exclude parameter.  Is it possible to do so in __init__?
>
> Thanks
>
> Simon

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to