Change product variant display from a select to radio

This commit is contained in:
Nathan Chapman 2023-03-13 15:26:46 -06:00
parent 26351ac422
commit ef3d293d5c
2 changed files with 24 additions and 4 deletions

View File

@ -853,12 +853,26 @@ article + article {
border-color: var(--yellow-color); border-color: var(--yellow-color);
} }
.product__form input, .product__form input:not([type=radio]),
.product__form select { .product__form select {
width: 100%; 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) { @media screen and (max-width: 700px) {
.product__detail { .product__detail {

View File

@ -17,15 +17,21 @@ from core import CoffeeGrind, ShippingContainer
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class VariantChoiceField(forms.ModelChoiceField):
def label_from_instance(self, obj):
return f'{obj.name} | ${obj.price}'
class AddToCartForm(forms.Form): class AddToCartForm(forms.Form):
quantity = forms.IntegerField(min_value=1, max_value=20, initial=1) quantity = forms.IntegerField(min_value=1, max_value=20, initial=1)
def __init__(self, variants, options, *args, **kwargs): def __init__(self, variants, options, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.fields['variant'] = forms.ChoiceField( self.fields['variant'] = VariantChoiceField(
label='', queryset=variants,
choices=[(variant.pk, f'{variant.name} | ${variant.price}') for variant in variants] widget=forms.RadioSelect,
label=''
) )
for option in options: for option in options: