class Routing(models.Model):
choice_text = models.CharField(_('Choices'), max_length=100, default="(any)", null=False)
admin.py
class AdminRoutingInlineForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(AdminRoutingInlineForm, self).__init__(*args, **kwargs)
CHOICES = [('a', 'any'),('b', 'blah'),] // override this with choices from populate_dropdown.js (code below)
self.fields['choice_text'].choices = CHOICES
class RoutingInlineAdmin(StackedInline):
form = AdminRoutingInlineForm
fields = (('choice_text', 'next'),)
model = Routing
class FormModelAdmin(ModelAdmin):
inlines = [RoutingInlineAdmin]
class Media:
js= ("sforms/admin/populate_dropdown.js",)
populate_dropdown.js
(function($) {
$(document).ready(function() {
$("[id^=id_fields-][id$=_options_0]").each(function(){ // user input from this field will be used as choices
choices = '(any),' + $(this).val().split("\n");
alert(choices);
// send this choices back to admin.py and override CHOICES in AdminRoutingInlineForm class
});
});