Mise à jour de la quantité dans le panier avec Bootstrap
Bonjour à vous!!
Je ne sais pas comment m'y prendre pour que les modifications de la quantité soient prise en compte et enregistrée dans la bd etant donné que je travaille directement avec bootstrap. J'ai fais des recherches par rapport mais aucune ne me donnait un resultat satisfaisant
<input aria-describedby="button-addon1" aria-label="Example text with button addon" class="form-control text-center quantity-amount" name="quantity" placeholder="" type="text" value="{{ form.instance.quantity }}"/>
<div class="col-md-6 mb-3 mb-md-0">
<button class="btn btn-black btn-sm btn-block">Update Cart</button>
</div>
Salut,
Si je comprends bien tu veux juste ajouter du bootstrap ?
Dans ton formset tu pourrais faire un truc du genre :
<form action="{% url 'store:update-quantities' %}" class="mt-4" method="POST">
{% csrf_token %}
{{ forms.management_form }}
{% for form in forms %}
<div class="card mb-3">
<div class="card-body">
<h3 class="card-title">{{ form.instance.product.name }}</h3>
<div class="row">
<div class="col-md-4">
<img alt="image produit" class="img-fluid" src="{{ form.instance.product.thumbnail_url }}"/>
</div>
<div class="col-md-8">
<p class="card-text">{{ form.instance.product.descripton }}</p>
{{ form.as_p }}
</div>
</div>
</div>
</div>
{% endfor %}
<button class="btn btn-primary" type="submit">Mettre à jour les quantités</button>
</form>
En fait je garde la structure des balises django, en y ajoutant un peu de boostrap.
Voici mon formulaire complet au besoin
<form %}="" 'chaima_shop:update_quantities'="" action="{%" class="col-md-12" method="post" url="">
{% csrf_token %}
{{ forms.management_form }}
<div class="site-blocks-table">
<table class="table">
<thead>
<tr>
<th class="product-thumbnail">Image</th>
<th class="product-name">Product</th>
<th class="product-price">Price</th>
<th class="product-quantity">Quantity</th>
<th class="product-total">Total</th>
<th class="product-remove">Remove</th>
</tr>
</thead>
<tbody>
{% for form in forms %}
<!-- 0000000000000000000000000000 -->
<tr>
<td class="product-thumbnail">
<img alt="Image" class="img-fluid" src="{{ form.instance.product_image1.url }}"/>
</td>
<td class="product-name">
<h2 class="h5 text-black">{{ form.instance.product.product_name }}</h2>
</td>
<td>{{ form.instance.product.product_price }}</td>
<td>
<div class="input-group mb-3 d-flex align-items-center quantity-container" style="max-width: 120px;">
<div class="input-group-prepend">
<button class="btn btn-outline-black decrease" type="button">−</button>
</div>
<input aria-describedby="button-addon1" aria-label="Example text with button addon" class="form-control text-center quantity-amount" name="quantity" placeholder="" type="text" value="{{ form.instance.quantity }}"/>
<div class="input-group-append">
<button class="btn btn-outline-black increase" type="button">+</button>
</div>
</div>
</td>
<td>2000 fcfa</td>
<td><a class="btn btn-black btn-sm" href="#">X</a></td>
</tr>
<!-- 0000000000000000000000000000 -->
{% endfor %}
</tbody>
</table>
</div>
<div class="col-md-6 mb-3 mb-md-0">
<button class="btn btn-black btn-sm btn-block">Update Cart</button>
</div>
</form>
Est-ce que tu connais ça ?
https://django-crispy-forms.readthedocs.io/en/latest/
Je pense que django crispy forms peut résoudre ton problème :)
Et en plus il existe une version bootstrap 5 : https://github.com/django-crispy-forms/crispy-bootstrap5.
C'est ma première fois d'entendre parler et honnnêtement je n'y comprends pas grand chose. Je cherche même des tutoriel mais tout est en anglais
Si tu customise le placement des champs oui tu peux utiliser l'id.
Mais tu peux customiser avec crispy directement dans form.py.
Exemple :
from django import forms
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Row, Column, Submit
from .models import Product, Supplier, Company
class ProductForm(forms.ModelForm):
ean = forms.CharField()
class Meta:
model = Product
exclude = ["slug", "company", "stock"]
def __init__(self, request, *args, **kwargs):
super().__init__(*args, **kwargs)
# Initialisation du helper Crispy Forms
self.helper = FormHelper()
# Mise en forme avec Bootstrap 5 (exemple)
self.helper.layout = Layout(
Row(
Column("ean", css_class="col-md-6"),
Column("name", css_class="col-md-6"),
),
"description",
Row(
Column("suppliers", css_class="col-md-12"),
),
Submit("submit", "Enregistrer", css_class="btn-primary")
)
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte