Commit 21928f2b authored by Jacob Kaplan-Moss's avatar Jacob Kaplan-Moss
Browse files

Fixed #7738: support initial values via `GET` for `SelectMutliple` in the admin.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@8699 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 89ccbabb
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -503,7 +503,17 @@ class ModelAdmin(BaseModelAdmin):
                self.log_addition(request, new_object)
                return self.response_add(request, new_object)
        else:
            form = ModelForm(initial=dict(request.GET.items()))
            # Prepare the dict of initial data from the request.
            # We have to special-case M2Ms as a list of comma-separated PKs.
            initial = dict(request.GET.items())
            for k in initial:
                try:
                    f = opts.get_field(k)
                except FieldDoesNotExist:
                    pass
                if isinstance(f, models.ManyToManyField):
                    initial[k] = initial[k].split(",")
            form = ModelForm(initial=initial)
            for FormSet in self.get_formsets(request):
                formset = FormSet(instance=self.model())
                formsets.append(formset)
+8 −0
Original line number Diff line number Diff line
@@ -36,6 +36,14 @@ class AdminViewBasicTest(TestCase):
        response = self.client.get('/test_admin/admin/admin_views/section/add/')
        self.failUnlessEqual(response.status_code, 200)
    
    def testAddWithGETArgs(self):
        response = self.client.get('/test_admin/admin/admin_views/section/add/', {'name': 'My Section'})
        self.failUnlessEqual(response.status_code, 200)
        self.failUnless(
            'value="My Section"' in response.content, 
            "Couldn't find an input with the right value in the response."
        )
    
    def testBasicEditGet(self):
        """
        A smoke test to ensureGET on the change_view works.