Lassen Sie uns sagen, ich habe ein Product
Modell mit Produkten in einem Schaufenster und eine ProductImages
Tabelle mit Bildern des Produkts, die null oder mehr Bilder haben können. Hier ist ein vereinfachtes Beispiel:Django Abfrage Annotation mit boolean Feld
class Product(models.Model):
product_name = models.CharField(max_length=255)
# ...
class ProductImage(models.Model):
product = models.ForeignKey(Product, related_name='images')
image_file = models.CharField(max_length=255)
# ...
Wenn die Suchergebnisse für Produkte anzeigen, ich will die Produkte priorisieren, die Bilder haben mit ihnen verbunden sind. Ich kann leicht die Anzahl der Bilder erhalten:
from django.db.models import Count
Product.objects.annotate(image_count=Count('images'))
Aber das ist eigentlich nicht was ich will. Ich möchte es mit einem boolean Feld mit Anmerkungen versehen, have_images
, der angibt, ob das Produkt ein oder mehrere Bilder hat, so dass ich damit sortieren:
Product.objects.annotate(have_images=(?????)).order_by('-have_images', 'product_name')
Wie kann ich das tun? Vielen Dank!
Danke für Ihre Antwort. Ich fand [einen Weg, es mit Django 1.8 zu tun] (http://stackoverflow.com/a/31186546/1751757), ohne 'extra()' und definitiv ohne 'rohe()'. –
@BrettGmoser das ist, warum ich Stackoverflow Liebe: D immer neue Dinge lernen! Danke auch und +1! – madzohan