Hi,
I have the following models for each item in my shopping
cart:
class CartItem(models.Model):
option = models.ForeignKey(Option) #product option tied to
a
particular product
cart = models.ForeignKey(Cart) #contains all cart items
quantity = models.IntegerField(blank=True, null=True)
unit_price = models.FloatField(blank=True, null=True)
def __unicode__(self):
return (self.option.full_name + "=>" +
str(self.quantity))
I'm trying to figure out how a clean way to build a form
with newform
library to permit a user to modify quantities of each
CartItem
instance in the shopping cart.
As a matter of fact, I don't know how many items are in the
shopping
cart, so I tryed to do like this:
class FormForItemQuantity(forms.Form):
def __init__(self, cart_items, *args, **kwargs):
super(FormForItemQuantity, self).__init__(*args,
**kwargs)
for item in cart_items:
self.fields[str(item.id)]=forms.IntegerField(initial=item
.quantity)
return
My view is therefore something like this:
def show_cart(request):
cart = Cart.objects.get(pk=request.session.get('cart_id',
None))
cart_items = cart.cartitem_set.all() #Just to avoid two
hits for the
same info
form_set = FormForItemQuantity(cart_items)
cart_rows = zip(cart_items, form_set)
return render_to_response('show_cart3.html', {'cart':
cart,
'num_items': cart.no_items, 'cart_items': cart_items,
'form_set':form_set, 'cart_rows':cart_rows})
and show_cart3 template is:
<h3>Your Cart</h3>
<table>
<tr>
<td>Prodotto</td>
<td>Variante</td>
<td>Quantità</td>
<td>Azione</td>
</tr>
<form method="POST"
action="/carts/update_quantity/">
{% for item,form in cart_rows %}
<tr>
<td>{{item.option.product.full_name}}</td>
<td>{{item.option.full_name}}</td>
<td>{}</td>
<td><a
href="/carts/{{item.id}}/delete">Remove</a&g
t;</td>
</tr>
{% endfor %}
</table>
<input type="SUBMIT" value="Aggiorna
quantità"/>
</form> Numero items: {}
<a href="/carts/empty">Empty the
cart</a> <br/> <a href="/orders/
save">Save the order</a>
The form is displayed as I wanted. However, I'm not able to
clean
posted data.
How can I access the form and extract the quantity data
posted from
the user?
I tried to something like:
quantity_form = FormForItemQuantity(request.POST)
but it isn't working.
Thank you for any help.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the
Google Groups "Django users" group.
To post to this group, send email to django-users googlegroups.com
To unsubscribe from this group, send email to
django-users-unsubscribe googlegroups.com
For more options, visit this group at htt
p://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---
|