I have basically 3 issues
I am trying to pass the primary key of vendor in url after creating it, but when i go the vendor page it shows the error ' Reverse for 'vendorCategory' with arguments '('',)' not found. 1 pattern(s) tried: ['vendorCategory/(?P<vendor_id>[0-9]+)/$'] '
In Vendor Category when i am trying to store multiple products against the specific vendor it show the error 'Field id int but You got ['12', '11'] '
in Vendor Category template when i select any category it just show the last category which i added
View.py
class Vendor(TemplateView):
template_name = 'purchase/vendor.html'
def get(self, request, *args, **kwargs):
return render(request, self.template_name)
def post(self, request, vendor_id):
try:
data = self.request.POST.get
vendor = VendorModel(
name=data('name'),
email=data('email'),
Contact_No=data('Contact_No'),
address=data('address')
)
vendorId = vendor.objects.get(pk=vendor_id)
vendor.save()
return redirect('vendorCategory', args={'vendor': vendorId})
except Exception as e:
return HttpResponse('failed{}'.format(e))
class Vendor_Category(TemplateView):
template_name = 'purchase/vendorCategory.html'
def get(self, request, vendor_id=None, *args, **kwargs):
categories = CategoryModel.objects.all()
categoryId = self.request.GET.get('SelectCategory')
products = ProductModel.objects.filter(category_id=categoryId)
vendor= VendorModel.objects.get(id=vendor_id)
args = {'categories': categories, 'products': products, 'selectedCategory': categoryId, 'vendor': vendor}
return render(request, self.template_name, args)
def post(self, request):
categoryobj = self.request.GET.get('SelectCategory')
productobj = self.request.POST.getlist('ProductSelect')
try:
vendor = VendorCategory(
vendor_id=self.request.vendor_id,
category_id=categoryobj,
product_id=productobj
)
vendor.save()
return redirect('menu')
except Exception as e:
return HttpResponse('failed{}'.format(e))
Urls.py
urlpatterns = [
path('vendorCategory/<int:vendor_id>/', Vendor_Category.as_view(), name='vendorCategory')
path('vendor', Vendor.as_view(), name='vendor'),
]
Template
VendoreCategory.html
{% extends 'auth/home.html' %}
{% block content %}
<form method="get">
{% csrf_token %}
<label>
<select name="SelectCategory" >
<option disabled="disabled" value="True" selected="{{ selectedCategory|yesno:"yes, no"|safe }}"> Select Category</option>
{% for category in categories %}
<option value="{{ category.id }}" selected="{% if category.id == selectedCategory %} {% endif %}">
{{ category.name }}
</option>
{% endfor %}
</select>
</label>
<input type="submit" value="Select">
</form>
<form method="post">
<input type="hidden" value={{ selectedCateogry }} name="ProductSelect">
{% csrf_token %}
<label>
{% for product in products%}
<input type="checkbox" name="ProductSelect" value="{{ product.id }}" >{{ product.name }}
{% endfor %}
</label>
<input type="submit" value="Select">
</form>
{% endblock %}
Vendor.html
{% extends 'auth/home.html' %}
{% block content %}
<form method="post">
{% csrf_token %}
<label for="name">Name
<input type="text" name="name" id="name" placeholder="Enter vendor name">
</label>
<label for="email">Email
<input type="email" name="email" id="email" placeholder="Enter vendor's email address">
</label>
<label for="Contact_No">Contact no
<input type="number" name="Contact_No" id="Contact_No" placeholder="Enter vendor contact no">
</label>
<label for="address">Address
<input type="text" name="address" id="address" placeholder="Enter vendor address">
</label>
<button type="submit">Submit </button>
</form>
{% endblock %}