Найти - Пользователи
Полная версия: Формы, радиобутоны и передача данных
Начало » Django » Формы, радиобутоны и передача данных
1 2
dreamer-s
Да мне это понятно, это просто и ясно. Но вот только мне не категории нужно выбирать, а товары, товары конкретной категории. Товары в виде радиобаттонов. Вот поэтому в forms.ру я отправлял id категории, что бы я смог достать конкретные товары одной категории. В общем, я реализовал это, но хочется, что бы в отображаемом <input type=“radio”> был добавлен class к примеру, ну и меня интересует, как я могу достать данные запросом, что был отработан в forms.ру.
FishHook
Итак, чтобы выбрать товары какой то категории, нам сначала нужно выбрать категорию.
Не так ли? Мы с вами выбираем категорию, сабмитим форму, во вьюху, передается id категории, там мы по этому id выбираем товары и возвращаем страницу с товарами.
Нет?

dreamer-s
Да, выбор категории реализован, это есть
вот вьюха
def product_once(request, category_id):
	product_once = Category.objects.get(id=category_id) #Неточно назвал переменную
								#это общие данные товаров
								#как описание, к примеру
	product_value = Product.objects.filter(category_id__exact=category_id)
			#это данные о каждом товаре в этой категории
			#передаю в шаблон на случай, если не получится сделать через forms.py
			#(собственно так сейчас и есть)
	if request.method == 'POST': #это в данной задаче не интересует...
		form = ChooseForm(request.POST)
		if form.is_valid():
			pass
	else:
		form = ChooseForm(param=category_id)
	context = {'product': product_once, 'value': product_value, 'form':form}
	return render(request, 'product_once.html', context)

в forms.py
class ChooseForm(forms.Form):
	radio = forms.ChoiceField()
	def __init__(self, *args, **kwargs):
		super(ChooseForm, self).__init__()
		param = kwargs.pop('param')
		self.fields['radio'].widget=forms.RadioSelect()
		self.fields['radio'].label=''
		self.fields['radio'].choices =Product.objects.filter(category_id__exact=param).values_list('id', 'name', 'photo')
#И тут я создал запрос, которым хотел вернуть данные, много данных
Вся фишка в том, что в js я слаб и интересовало, как реализовать смену картинок товара по клику какого-то радиобутона и сейчас в шаблоне у меня криво, но… В цикле выводится следующее
	<input id="radio{{ val.id }}" type="radio" name="rad" class="RadioButtonClass" value='{{ val.photo }}' onClick='picture ("{{ val.id }}");'></input>
Сейчас пишу, тыкаюсь в яваскрипт, что бы реализовать, но как мне средствами джанго добавить class=“CheckBoxClass”? То же самое событие onClick? через value лучше всего id передавать… Короче куча моментов из-за незнания js. Да литературой киньте, что мне оптимальнее подойдет, тоже поможет, правда хочу уже закончить и не париться, но за изучение стоит взяться.
FishHook
1.
а) Юзаем jQuery, событие change.
change
б) В разметке имеем элемент <img>
в) При отработке обработчика change запрашиваем аяксом URL картинки и присобачиаем результат к src.

Как то так это должно выглядеть
<script>
$(document).ready(function(){
$("[name=product]").change(function()
{
var product_id = $("[name=product]:checked").val();
$.getJSON("{%  url 'my_ajax_view_url' %}", {id:product_id}, function(img_url){ $("#img_id").attr("src", img_url)    })
}
)
})
</script>
<input type="radio" name="product" value="1"> Сабля
<input type="radio" name="product" value="2"> Пушка
<input type="radio" name="product" value="3"> Пулемёт
<img id="img_id" src="/static/img/no_picture.png">

ИЛИ

2. Используем форму с определенным target. Вьюха, обрабатывающая реквест от формы пусть рендерит такой шаблон
<html>
<head></head>
<body>
<img src={{ img.url }}>
</body>
</html>
Собственно во фрейм, указанный в target это дело и будет попадать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB