Reputation: 373
I am trying to get the vendor information against the category id,means when someone select the category all vendor's information against the category should be display,but when i call the url it show the error
' Cannot use QuerySet for "VendorCategory": Use a QuerySet for "Vendor" '.
how can i get the vendor information
Model.py
class Vendor(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=40)
Contact_No = models.IntegerField(unique=True)
email = models.CharField(max_length=30, unique=True)
def __str__(self):
return self.name
class VendorCategory(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
vendor = models.ForeignKey(Vendor, on_delete=models.CASCADE)
View.py
class All_Vendor(TemplateView):
template_name = 'purchase/allVendor.html'
def get(self, request, *args, **kwargs):
categories = categoryModel.objects.all()
categoryId = self.request.GET.get('SelectCategory')
vendorselect = VendorCategory.objects.filter(category_id=categoryId)
vendor_id = VendorCategory.objects.filter(vendor_id=vendorselect)
vendors = vendorModel.objects.get(id=vendor_id)
args = {'categories': categories, 'selectedCategory': categoryId, 'vendorselect': vendorselect, 'vendors': vendors}
return render(request, self.template_name, args)
Template
{% block content%}
<form method="get">
<label>
<select name="SelectCategory">
<option disabled="disabled" selected> Select Category</option>
{% for category in categories %}
<option value={{ category.id }}>
{{ category.name }}
</option>
{% endfor %}
</select>
</label>
<input type="submit" value="Select">
</form>
{% for vendor in vendorselect %}
{{ vendor.id }}
{% endfor %}
{% endblock %}
Upvotes: 1
Views: 205
Reputation: 476584
You filter with:
class All_Vendor(TemplateView):
template_name = 'purchase/allVendor.html'
def get(self, request, *args, **kwargs):
categories = categoryModel.objects.all()
categoryId = self.request.GET.get('SelectCategory')
vendors = Vendor.objects.filter(
vendorcategory__category_id=categoryId
)
args = {'categories': categories, 'selectedCategory': categoryId, 'vendors': vendors}
return render(request, self.template_name, args)
vendorselect
makes not much sense, since that is a collection of VendorCategory
s, not Vendor
s.
Upvotes: 1