Opened 9 years ago
Closed 5 years ago
#26607 closed New feature (fixed)
Add a hook to customize the admin's formsets parameters
| Reported by: | David Sanders | Owned by: | Manav Agarwal | 
|---|---|---|---|
| Component: | contrib.admin | Version: | dev | 
| Severity: | Normal | Keywords: | admin inline formset initial | 
| Cc: | Triage Stage: | Ready for checkin | |
| Has patch: | yes | Needs documentation: | no | 
| Needs tests: | no | Patch needs improvement: | no | 
| Easy pickings: | no | UI/UX: | no | 
Description
New feature that adds a method on InlineModelAdmin for providing initial data for the inline formset. By default there is no implementation, although one could be implemented to use GET parameters like get_changeform_initial_data, but it wouldn't be trivial due to the list nature of formset initial data.
Change History (16)
comment:1 by , 9 years ago
| Triage Stage: | Unreviewed → Accepted | 
|---|
comment:2 by , 9 years ago
| Patch needs improvement: | set | 
|---|
comment:3 by , 9 years ago
| Summary: | Add InlineModelAdmin.get_formset_initial_data(). → Add a hook to customize the admin's formsets parameters | 
|---|
I think we should add a more general customization hook that allows customizing the parameters passed to the formset initialization (which includes initial data). That could also allow the use case of #27240 which requires adding form_kwargs': {'request': request} to formset_params.
comment:4 by , 5 years ago
| Owner: | removed | 
|---|---|
| Status: | new → assigned | 
comment:5 by , 5 years ago
| Owner: | set to | 
|---|
comment:6 by , 5 years ago
consider the model and admin as defined below.
models.py
class Author(models.Model):
    name = models.CharField(max_length=100)
class Book(models.Model):
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
admin.py
class BookInline(admin.StackedInline):
    model = Book
class AuthorAdmin(admin.ModelAdmin):
    inlines = [
        BookInline,
    ]
admin.site.register(Author, AuthorAdmin)
Is it a good idea to pass the initial vales of bookinline fields by using get request in such a way like 
http://127.0.0.1:8000/admin/polls/author/add/?name=Author_name&book_1_name=book1_name_value&book_2_name=book2_name_value
Example:
http://127.0.0.1:8000/admin/polls/author/add/?name=william_shakespeare&book_1_name=Hamlet&book_2_name=Romeo_and_Juliet
Please update me if the idea seems fine so that I may create a PR in order to solve the issue.
comment:7 by , 5 years ago
| Needs documentation: | set | 
|---|---|
| Needs tests: | set | 
| Patch needs improvement: | unset | 
comment:8 by , 5 years ago
| Patch needs improvement: | set | 
|---|
comment:9 by , 5 years ago
| Needs documentation: | unset | 
|---|---|
| Needs tests: | unset | 
comment:10 by , 5 years ago
| Patch needs improvement: | unset | 
|---|
comment:11 by , 5 years ago
| Needs documentation: | set | 
|---|
comment:12 by , 5 years ago
| Needs documentation: | unset | 
|---|
comment:14 by , 5 years ago
| Patch needs improvement: | unset | 
|---|
comment:15 by , 5 years ago
| Triage Stage: | Accepted → Ready for checkin | 
|---|
Currently the PR has merge conflicts