diff --git a/dashboard/forms.py b/dashboard/forms.py index 36e738e..5348f35 100644 --- a/dashboard/forms.py +++ b/dashboard/forms.py @@ -37,6 +37,13 @@ class ProductVariantUpdateForm(forms.ModelForm): product=self.instance.product ) + def clean_weight(self): + data = self.cleaned_data['weight'] + if not data: + data = 0 + + return data + class CouponForm(forms.ModelForm): class Meta: diff --git a/static/styles/main.css b/static/styles/main.css index ad56e52..13bf589 100644 --- a/static/styles/main.css +++ b/static/styles/main.css @@ -853,12 +853,26 @@ article + article { border-color: var(--yellow-color); } -.product__form input, +.product__form input:not([type=radio]), .product__form select { width: 100%; } +.product__form #id_variant { + display: flex; + gap: 1rem; + flex-direction: column; +} +.product__form #id_variant div label { + display: flex; + gap: 1rem; + font-weight: bold; +} + + + + @media screen and (max-width: 700px) { .product__detail { diff --git a/storefront/forms.py b/storefront/forms.py index a0ad5bc..7b3c377 100644 --- a/storefront/forms.py +++ b/storefront/forms.py @@ -17,15 +17,21 @@ from core import CoffeeGrind, ShippingContainer logger = logging.getLogger(__name__) +class VariantChoiceField(forms.ModelChoiceField): + def label_from_instance(self, obj): + return f'{obj.name} | ${obj.price}' + + class AddToCartForm(forms.Form): quantity = forms.IntegerField(min_value=1, max_value=20, initial=1) def __init__(self, variants, options, *args, **kwargs): super().__init__(*args, **kwargs) - self.fields['variant'] = forms.ChoiceField( - label='', - choices=[(variant.pk, f'{variant.name} | ${variant.price}') for variant in variants] + self.fields['variant'] = VariantChoiceField( + queryset=variants, + widget=forms.RadioSelect, + label='' ) for option in options: