Нужно организовать передачу в функцию данных одного из полей формы(для записи в БД) и дополнительных элементов(присутствуют на странице шаблона) user.id, status.id . Сейчас в функцию передается только product.id, при добавлении дополнительных элементов в , при переходе на страницу с формой выдает:
Reverse for 'zakaz' with arguments '(1, 2)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['(?P[0-9]+)/zakaz/$']
как настроить передачу нужных параметров в представление и последующую запись их в БД в нужные столбцы?
models.py
class Zakaz(models.Model):
user = models.ForeignKey(User)
product = models.ForeignKey("product", Product)
status = models.ForeignKey("status", Status)
suggestions = models.TextField("пожелания", max_length=1000)
forms.py
class ZakazForm(forms.ModelForm):
class Meta:
model = Zakaz
fields = ['suggestions']
views.py
def detail(request, pk):
product = get_object_or_404(Product, pk=pk)
form = ZakazForm
context = {'product': product, 'form': form}
return render(request, 'main/detail.html', context)
def zakaz(request, pk):
if request.method == 'POST':
form = ZakazForm(request.POST)
if form.is_valid():
// Запись всего в БД
return HttpResponseRedirect('/thanks/')
else:
product = get_object_or_404(Product, pk=pk)
form = ZakazForm
context = {'product': product, 'form': form}
return render(request, 'main/detail.html', context)
urls.py
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^(?P
detail.html
Ответ
Попробуйте передавать в url именованный аргумент:
{% url 'main:zakaz' pk=product.id %}
Комментариев нет:
Отправить комментарий