Well, I got it. In a very UGLY way, but it does its job.
I modified the inline class so that it gets access to the request object by 
overriding the get_formset function

class CheckupInLineAdmin(admin.StackedInline):
    model = Checkup
   * form =CheckupAdminForm*
    extra = 1

    *def get_formset(self, request, obj=None, **kwargs):
        self.form.request=request
        return super(CheckupInLineAdmin, self).get_formset(request, obj, 
**kwargs)*


Then I defined a form for this class overriding the __init__ function to 
give proper initial values:

class CheckupAdminForm(forms.ModelForm):
    class Meta:
        model = Checkup

        def __init__(self, *args, **kwargs):
            super(CheckupAdminForm, self).__init__(*args, **kwargs)
            # if it is not an instance (an already saved object)
            if not kwargs.has_key('instance'):
                # get patient id from request path
                # UGLY but I did not find a better way...
                # the request path is something like
                # /admin/myapp/patient/1/
                # where 1 is the patient id
                splitted = self.request.META['PATH_INFO'].split('/')
                # check the last bit is a int
                # this is useful when creating a new patient. In this case
                # the request path is
                # /admin/myapp/patient/add/ and the last bit is not the 
patient id
                try:
                    id_pat = int(splitted[len(splitted)-2])
                    pat = Patient.objects.get(id=id_pat)
                    checkups = pat.checkups.all()
                    how_many = len(checkups)
                    # take the last checkup
                    if how_many > 0:
                        checkup = checkups[how_many - 1]
                        # initialize fields depending on the last chechup 
values
                        self.initial['alcol'] = checkup.alcol
                except:
                    pass

If someone knows a better way, any hint is appreciated.
Cheers
FraMazz

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/-MzJn8ScMvsJ.
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.

Reply via email to