Hello,
Trying to bring a django app into production, and I ran into a real
headscratcher.
I have a Class based view inherited from create. When the page reloads,
after validation, I check the initial dictionary for a field's value to
fill in the queryset for a different field.
I'm getting sporadic errors about one of the fields not found in the
initial object. When I looked closer into the problem, the initial
dicitonary matched a form for a totally different model.
If I need to pre-populate the initial dictionary, I override the
get_initial and return the dictionary that I want. I am not setting
initial= in the class definition. Is this the right way to do this task?
I am concerned about a static initial dictionary sticking around. The base
edit class returns a copy of the initial dictionary, but if the initial
dicitonary somehow has invalid values in it, I could be seeing this for all
my forms.
This is what I did for the initial dictionary:
class UserCreateView(AdminCreateView):
model=User
success_url='/portal/accounts/list'
form_class=PortalUserForm
def get_form_kwargs(self):
kwargs = super(UserCreateView, self).get_form_kwargs()
kwargs.update({'request' : self.request})
return kwargs
def get_initial(self):
return {}
On a ModelForm (unrelated to the form/model above) I was trying to access
the self.initial for a particular field, which threw a Key exception. The
initial dictionary passed down on the yellow screen did not match the form
or data for the view at all.
kwargs:
{'initial': {'agency': <Agency: Baldwin>,
'canEnterMealCounts': False,
'canManageCalendar': True,
'canManageCustomerAllergies': True,
'canManageFieldTrips': True,
'canManageSocializations': True,
'canManageSpecialOrders': True,
'canManageSupplies': False,
'canPrintMenus': True,
'chefablesUser': False,
'location': <QuerySet []>,
'phone': PhoneNumber(country_code=1, national_number=2018158136,
extension=None, italian_leading_zero=None, number_of_leading_zeros=None,
country_code_source=1, preferred_domestic_carrier_code=None)},
'instance': None,
'prefix': None}
I have no idea where that initial dictionary came from. My get_form_kwargs
looks like this:
def get_form_kwargs(self):
kwargs = super(PendingLabelsCreateView, self).get_form_kwargs()
kwargs.update({'user': self.request.user})
return kwargs
The direct ancestor doesn;'t have get_form_kwargs defined, and that is
defined as such:
class AdminCreateView(LoginRequiredMixin, UserPassesTestMixin, CreateView):
I need to understand where that initial value came from and determine if I
have static values where I don't want them.
Thanks in advance
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/db24def3-f8cc-4954-bbd3-72b6ed3fa0d6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.