Nowandthen98
Nowandthen98

Reputation: 300

Django Admin - Custom Inline Form

I'm attempting to use a custom inline form within the django admin.

admin.py --

class EmpInline(admin.StackedInline):
    model = Emp
    form = UpdateYearlyForm
    show_change_link = True

class CompanyAdmin(admin.ModelAdmin):
    list_display = ('companyname','companyid','get_active', 'get_updated')
    inlines = [EmpInline]

When the Company name is clicked on, the company details are shown along with a formset for all the related employees.

This works in regards to displaying the form however one of the fields is a custom choice field which indirectly updated a model field. Which, in the normal user view (this form needs to be used both by an admin for all records and for users for the records pertaining to them) the custom field is handled as below.

I've only shown a snippet of the view as it is quite long.

views.py --

if formset.is_valid():
        for form in formset.forms:
            if form.is_valid():
                obj = form.save(commit=False)
                data = form.cleaned_data
                if data['updatefield'] == 'accident':
                    obj.years += 1
                else data['updatefield'] == 'free':
                    obj.years += 1
                obj.save()

Is there a way of handling the form (and the custom field) in the same way when used as an inlineform in the admin?

Upvotes: 4

Views: 7608

Answers (1)

Nowandthen98
Nowandthen98

Reputation: 300

If it helps anyone - overriding the save() function on the form itself sorted this problem and it probably better practice therefore I changed to using this on both the User and Admin side.

Upvotes: 1

Related Questions