On Mon, Jun 27, 2011 at 11:03 PM, momo2k <tkew...@googlemail.com> wrote: > Hello, > > Is there a way to set dynamic default values for custom fields in the > admin? > > Description of the problem: > > # models.py > # there are two models > class Meal(models.Model): > name = ... > > def check_new_price(self, price): > # checks if the price is new and creates a new price if > neccessary > > class Price(models.Model): > meal = models.ForeignKey(Meal, ....) > valid_to = models.DateField(....) # None for current price > amount = CurrencyField() # nearly identical to IntegerField > > # admin.py > # I extended the Admin with a custom form: > class MealModelForm(forms.ModelForm): > price = CurrencyFormField() # Nearly identical to Decimalfield > class Meta: > model = Meal > > class MealAdmin(admin.ModelAdmin): > form = MealModelForm > .... > def save_model(self, request, obj, form, change): > super(MealAdmin, self).save_model(request, obj, form, change) > obj.check_new_price(form.cleaned_data['price']) > > > My question is: How do i tell the django admin to display the current > price in the form field? I already tried to add an "price"-attribute > in the ModelAdmin.get_object() method, but that doesn't work. If I > call the Admin page for a meal, the price is blank instead of > displaying the current price. > > So, repeating my first question: Is there a way to set dynamic default > values for custom fields in the admin?
Yes, and it should be done on the __init__ method of your custom form. class MealModelForm(forms.ModelForm): price = CurrencyFormField() # Nearly identical to Decimalfield class Meta: model = Meal def __init__(self, *args, **kwargs): super(MealModelForm).__init__(*args, **kwargs) if 'instance' in kwargs.keys(): self.fields['price'].initial = Price.objects.get(meal=kwargs['instance']).amount -- Marc -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@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.