Thanks for sharing your insights!

On Tuesday, June 14, 2016 at 12:10:01 PM UTC-6, Ryan Hewitt wrote:
>
> I believe that the forms obey the order of the "fields" property of the 
> Meta class within your Form class.  So if you were overriding a given form 
> you could do this:
>
> *class FooForm(models.ModelForm):*
> *    ...<code>...*
> *    class Meta:*
> *        fields = ( 'myfield1', 'myfield2', ... )*
>
>
> And the fields would be ordered as they appear in the tuple/list.
>
> If you look at [cartridge] AddProductForm, you'll note that __init__ 
> treats the fields like a dict.  This is because it inherits from [django] 
> Form, which inherits from [django] BaseForm.  At the end of the 
> initialization of BaseForm it calls 
>
> *self.order_fields( self.field_order if field_order is None else 
> field_order )*
>
> where field_order is either already present or passed into the 
> constructor.  In this function it sets up an OrderedDict.
>
> My suggestion is to modify [cartridge] views.py, and pass in field_order 
> after inspecting the object.
>
> This behavior appears to be new in Django 1.9.  Source: 
> https://docs.djangoproject.com/en/1.9/ref/forms/api/#notes-on-field-ordering
>
>
>
>
> On Tuesday, June 14, 2016 at 2:30:22 AM UTC-7, Tran wrote:
>>
>> Thanks Ryan. 
>>
>> I followed the blog again and it works now (I switched the approach 
>> similar to the blog's suggestion). I found the blog earlier but encountered 
>> the error  "AppRegistryNotReady("Models aren't loaded yet.") " whenever I 
>> put "from cartridge.shop.forms import AddProductForm" into my 
>> apps/models.py. People also encountered this error in the comment and on 
>> the internet (usually with version 1.8 or above), so one way to temporarily 
>> fix this is to move all monkey patch from models.py to the shop source code 
>> page_processors.py.
>>
>> Also, do you know how to make inject the fields in "EXTRA_MODELS_FIELDS" 
>> to be after the default fields defined in the source code. Right now, all 
>> of my injected fields are on top and I prefer to have them after the 
>> default fields.
>>
>> On Monday, June 13, 2016 at 2:42:04 PM UTC-6, Ryan Hewitt wrote:
>>>
>>> Tran,
>>>
>>> I'm in a similar situation except that I have to add fields to an order 
>>> that will actually affect the pricing.  I'm still trying to decide on a 
>>> good approach.
>>>
>>> Your use case appears to be more straightforward and I would recommend 
>>> reading this blog: 
>>> http://bitofpixels.com/blog/collecting-additional-information-on-a-per-product-basis-in-cartridge/
>>>
>>> In the post he explains that you need to modify Product, CartItem and 
>>> OrderItem, perform a migration and integrate it by modifying the product 
>>> form templates.  To tie everything together he overrides the cart and the 
>>> order add functions, as well as the setup function for Order.
>>>
>>> I feel this approach is a hack and is resistant to upstream change. 
>>>  Unfortunately it appears to be the Mezzanine way and I don't have enough 
>>> e-commerce experience to contrast it to other systems.  Please update the 
>>> thread based on your experiences - especially if you encounter a better way 
>>> to make such customizations.
>>>
>>> - Ryan
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Mezzanine Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to