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.