Django, extract value from formset
Question:
I have overridden save_formset method to extract data from admin page. Here is how my code looks like:
def save_formset(self, request, form, formset, change):
for f in formset:
print('Voter address is: ', f['voter_address'])
super().save_formset(request,form, formset, change)
I get output as:
But I want to extract actual value which is "klncklas," and for second one I would like to know that there is no value present. How I can achieve this?
Answers:
def save_formset(self, request, form, formset, change):
# Create instances. Each instance will be a "row" (obj) of the inline model
instances = formset.save(commit=False)
# Iterate over the instances (objects of the Inline Model)
for instance in instances:
# Get the object's attribute (Model field)
print(instance.voter_address)
super().save_formset(request,form, formset, change)
In save_formset(), you need to use formset.save(commit=False) to get the submitted inline objects in Django Admin as shown below. *Don’t worry formset.save(commit=False)
does not save objects but does return objects while formset.save()
equivalent to formset.save(commit=True)
does save and return objects:
def save_formset(self, request, form, formset, change):
for f in formset.save(commit=False): # Here
print('Voter address is: ', f['voter_address'])
super().save_formset(request, form, formset, change)
You can see my answer explaining about save(commit=False)
vs save()
and how to customize the submitted inline objects in Django Admin.
I have overridden save_formset method to extract data from admin page. Here is how my code looks like:
def save_formset(self, request, form, formset, change):
for f in formset:
print('Voter address is: ', f['voter_address'])
super().save_formset(request,form, formset, change)
I get output as:
But I want to extract actual value which is "klncklas," and for second one I would like to know that there is no value present. How I can achieve this?
def save_formset(self, request, form, formset, change):
# Create instances. Each instance will be a "row" (obj) of the inline model
instances = formset.save(commit=False)
# Iterate over the instances (objects of the Inline Model)
for instance in instances:
# Get the object's attribute (Model field)
print(instance.voter_address)
super().save_formset(request,form, formset, change)
In save_formset(), you need to use formset.save(commit=False) to get the submitted inline objects in Django Admin as shown below. *Don’t worry formset.save(commit=False)
does not save objects but does return objects while formset.save()
equivalent to formset.save(commit=True)
does save and return objects:
def save_formset(self, request, form, formset, change):
for f in formset.save(commit=False): # Here
print('Voter address is: ', f['voter_address'])
super().save_formset(request, form, formset, change)
You can see my answer explaining about save(commit=False)
vs save()
and how to customize the submitted inline objects in Django Admin.