Monday, June 27, 2011

ModelAdmin, custom field: default value?

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?

--
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+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment