python - 如何从django中的外键获取数据
问题描述
我正在尝试根据类别 id 获取供应商信息,这意味着当有人选择类别时,应显示针对该类别的所有供应商信息,但是当我调用 url 时,它会显示错误
'不能将 QuerySet 用于“VendorCategory”:对“Vendor”使用 QuerySet '。
如何获取供应商信息
模型.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)
视图.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)
模板
{% 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 %}
解决方案
你过滤:
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
没有多大意义,因为那是VendorCategory
s 的集合,而不是Vendor
s。
推荐阅读
- ionic-framework - 电容器:localStorage 中的 _capuid 是做什么用的?
- azure - 表单识别器:一次扫描中的多个文档不适用于带标签的模型
- c# - 手动创建 JSON
- python - 字段“id”需要一个数字,但得到了 ObjectId
- google-cloud-platform - 将域从外部 ISP 转移到 GCP 云域
- c++ - PostMessage — 如何发送 int 数组?
- python - 使用链式条件过滤 Pandas 中的行
- hibernate - 在spring data jpa中使用@PrimaryKeyJoinColumn注解
- flutter - Flutter Web 字体缺失
- python - 使用 $unwind 聚合 Mongodb 数组值需要很长时间