# Unable to save multiple objects from admin panel

**URL:** <https://forum.djangoproject.com/t/unable-to-save-multiple-objects-from-admin-panel/24773>\
**Category:** The Admin\
**Created:** [October 25, 2023, 9:59am UTC](https://forum.djangoproject.com/t/unable-to-save-multiple-objects-from-admin-panel/24773 "2023-10-25T09:59:20Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![xtlc](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/xtlc/32/3887_2.png) [@xtlc](https://forum.djangoproject.com/u/xtlc)\
**Post date:** [October 25, 2023, 9:59am UTC](https://forum.djangoproject.com/t/unable-to-save-multiple-objects-from-admin-panel/24773/1 "2023-10-25T09:59:20Z")

</div>

I have a very simple Model:

```auto
class SomeParentModel(models.Model):
    description = models.TextField(max_length=512, blank=True)
    created = models.DateTimeField(auto_now_add=True)

class SomeModel(SomeParentModel):
    number = models.BigIntegerField() # not unique!
    created_date = models.DateTimeField(auto_now_add=True)
    somefield = models.ForeignKey(...)
    someotherfield = models.BooleanField(blank=True)

```

and I want to save multiple instances of `Nbr` objects at once:

```auto
class SomeModelSetForm(forms.ModelForm):
    last_number = Nbr.objects.order_by("-number").first().number
    start_number = forms.IntegerField(required=True, initial=last_number+1)
    end_number = forms.IntegerField(required=True, initial=last_number+1)
    
    class Meta:
        model = SomeModel
        fields = ["start_number", "end_number", ...]
        exclude = ["number"]

    def clean(self):
        cleaned_data = super().clean()
        s = int(cleaned_data["start_number"])
        e = int(cleaned_data["end_number"]) + 1
        self.numbers = [n for n in range(s, e)]

    def save(self, commit=False)
        instances = []
        for nbr in self.numbers:
            instances.append(SomeModel(number=nbr, ....))
        SomeModel.objects.bulk_create(instances)
        return instances ## tried: return instances[0]

```

This leads to an `AttributeError: 'list' object has no attribute 'save'`  
So I thought I could maybe just return the last object from `instances` which throws the error: `AttributeError: 'SomeModelSetForm' object has no attribute 'save_m2m'. Did you mean: '_save_m2m'?`

How can i create one object per number in my `numbers` list correctly or how can I call a new `save` method for every element in my list?

---

<div class="post-metadata">

**Author:** ![xtlc](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/xtlc/32/3887_2.png) [@xtlc](https://forum.djangoproject.com/u/xtlc)\
**Post date:** [October 25, 2023, 12:34pm UTC](https://forum.djangoproject.com/t/unable-to-save-multiple-objects-from-admin-panel/24773/2 "2023-10-25T12:34:44Z")

</div>

I was able to do what I intended by faking a return model instance, but I would love to know if there is a better solution:

```auto
def save(self, commit=False)
    instances = []
    for nbr in self.numbers:
        instances.append(SomeModel(number=nbr, ....))
    SomeModel.objects.bulk_create(instances)
    fake = super(SomeModelSetForm, self).save(commit=False)
    fake.uid = 0
    return fake

```

---

<div class="post-metadata">

**Author:** ![xtlc](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/xtlc/32/3887_2.png) [@xtlc](https://forum.djangoproject.com/u/xtlc)\
**Post date:** [October 25, 2023, 1:03pm UTC](https://forum.djangoproject.com/t/unable-to-save-multiple-objects-from-admin-panel/24773/3 "2023-10-25T13:03:29Z")

</div>

i already found the caveat:

I issue different forms on weather it is a new form or change form, and I had to add:

```auto
def get_form(self, request, obj=None, change=False, **kwargs):
    if change == True or obj:
        return SomeModelSingleForm
    return SomeModelSetForm

```

because `get_form` is being called twice (maybe a `super()` somewhere?)
