I’ve been reading a lot but I don’t seem to be able to figure out a solution to this.
I’m writing an application in Django, I’m still writing the admin side.
I have a model called “Environments” and a model called “Servers”, there is a ForeignKey relation between Servers and Environments such as a given Environment has several servers.
When modifying the “add” form for Environments in the admin interface I use a Inline form to be able to visualize the list of Servers that will be associated to the Environment, something like this:
class ServerInline(admin.TabularInline):
model = Server
extra = 39
class EnvironmentAdmin(admin.ModelAdmin):
inlines = [ServerInline]
Pretty simple right?
What I would like to do is prepopulate the Servers inline forms with default values, I’ve been able to prepopulate them with the same value doing this:
class ServerInlineAdminForm(forms.ModelForm):
class Meta:
model = Server
def __init__(self, *args, **kwargs):
super(ServerInlineAdminForm, self).__init__(*args, **kwargs)
self.initial['name']='Testing'
class ServerInline(admin.TabularInline):
form = ServerInlineAdminForm
model = Server
extra = 39
class EnvironmentAdmin(admin.ModelAdmin):
inlines = [ServerInline]
But this isn’t what I want, I would like to be able to initialize the 39 Server form instances with 39 different values that I have in a list. What would be the best way to do that??
Thank you!
I realized that I solved the problem myself and hadn’t answered here.
What I finally did is to override the Environment class save_model method instead for using the admin forms.
I’ll explain a little bit better:
I have an environment object and a server object. An environment has a number of servers that are linked to it via a foreign key into the server object. My goal was to populate the servers associated to an environment in the environment creation process. To be able to do that what I did was override the save_model method for the Environment object, do an obj.save() and AFTERWARDS create the Server objects that point to this environment, and then obj.save() again. Why afterwards? Because I can’t relation a new created server with an environment that doesn’t exist yet. Let me know if there is someone interested on he actual code.