我想得到一个JSON字典,其中包含所有产品名称,包括相应的公司名称(请参阅“我想要的输出”部分)。我的搜索/过滤器函数将数字作为公司返回,这是错误的(请参阅“我的输出”部分)。谢谢!
产品型号
import {MDCTextField} from '@material/textfield';
import {MDCNotchedOutline} from '@material/notched-outline';
const notch = new MDCNotchedOutline(document.querySelector('.mdc-notched-outline'));
const username = new MDCTextField(document.querySelector('.username'));
公司型号
@import "@material/textfield/mdc-text-field";
@import "@material/notched-outline/mdc-notched-outline";
搜索/过滤功能
class Product(models.Model):
name = models.CharField(max_length=150)
company = models.ForeignKey(Company, on_delete=models.CASCADE)
我有输出
class Company(models.Model):
name = models.CharField(max_length=150)
我想要的输出
product_names = Product.objects.filter(name__startswith=request.GET.get('query')).values('name', 'company')
答案 0 :(得分:1)
在此处查看序列化器:https://www.django-rest-framework.org/api-guide/serializers/
序列化器允许您指定从模型中呈现数据的格式,这听起来像您想要实现的。
答案 1 :(得分:1)
这是解决我的问题的方法:
product_names = Product.objects.filter(name__startswith=request.GET.get('query'))
.values('name', 'company__name'))
答案 2 :(得分:1)
如果您想在字典中显示company
而不是company__name
,则可以将F
对象与annotate
一起使用,如下所示:
from django.db.models import F
product_names = Product.objects.filter(name__startswith=request.GET.get('query'))
.values('name').annotate(company=F('company__name')))