我正在尝试从三个表中过滤字段。 我需要加入1表作为列表和2表与条件。 我有Django 1.9.4,MySql 5.6.17
这是我的models.py:
def get_queryset(self):
return Products.objects.values('id', 'fullname', 'authors', 'code', 'theme').annotate(barcodes=Concat('barcodes__barcode'))
我需要获取所有产品,加入group_concat(不同的条形码)并加入shop_id = 1的价格,如果字符串中的价格不存在 - 返回价格= 0
我这样做了:
class Concat(Aggregate):
function = 'GROUP_CONCAT'
template = '%(function)s(%(distinct)s%(expressions)s)'
def __init__(self, expression, distinct=False, **extra):
super(Concat, self).__init__(
expression,
distinct='DISTINCT ' if distinct else '',
output_field=models.CharField(),
**extra)
并使用聚合函数:
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.requestLocation()
locationManager.requestWhenInUseAuthorization()
locationManager.requestAlwaysAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
}
如何使用shop_id = 1添加价格?
感谢。
答案 0 :(得分:0)
from django.db.models import Q
...
def get_queryset(self):
return Products.objects.filter(Q(prices__shop_id=1) | Q(prices__shop_id__isnull=True)).values('id', 'fullname', 'authors', 'code', 'tema', 'prices__price').annotate(barcodes=Concat('barcodes__barcode', True))