[英]How can get the data from the foreign key in django
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我正在尝试根据类别 id 获取供应商信息,这意味着当有人 select 该类别时,应显示所有供应商针对该类别的信息,但是当我调用 url 时,它会显示错误
' Cannot use QuerySet for "VendorCategory": Use a QuerySet for "Vendor" '. '不能将 QuerySet 用于“VendorCategory”:对“Vendor”使用 QuerySet '。
how can i get the vendor information如何获取供应商信息
Model.py 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视图.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 %}
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. vendorselect
没有多大意义,因为那是VendorCategory
的集合,而不是Vendor
的集合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.