Set value of excluded field in django ModelForm programmatically
django, python
Solution
What you can do is when you save the form in the view, you don't commit the data. You can then set the value of the excluded field programmatically. I run into this a lot when I have a user field and I want to exclude that field and set to the current user.
form = form.save(commit=False)
form.language = "en"
form.save()
Here's a little more info on the commit=False --> https://docs.djangoproject.com/en/1.6/topics/forms/modelforms/#the-save-method
Problem
I have a `ModelForm` class where I want to exclude one of the fields (`language`) from the form and add it programmatically. I tried to add the language in the clean method, but got an `IntegrityError` (`"Column 'language_id' cannot be null"`). I assume this is because any data for `language` returned from `clean()` will be ignored since it's in the exclude tuple. I'm using the form in a `ModelAdmin` class. I haven't managed to find any way to deal with this, so any tips or hints will be much appreciated. ``` from django import forms from myapp import models from django.contrib import admin class DefaultLanguagePageForm(forms.ModelForm): def clean(self): cleaned_data = super(DefaultLanguagePageForm, self).clean() english = models.Language.objects.get(code="en") cleaned_data['language'] = english return cleaned_data class Meta: model = models.Page exclude = ("language",) class PageAdmin(admin.ModelAdmin): form = DefaultLanguagePageForm ```