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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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.

Reply via email to