Bin mit einer Django-Abfrage, um durch ein Modell zu filtern und die Bedingung auszudrucken, die die Suche erfüllt. HierDjango-Filter mit AND
ist die Aussicht
if user_search != '' and (start_date != '' and end_date != ''):
items = Order.objects.filter(
Q(client__email__iexact=user_search) , Q(created_on__range=(start_date, end_date))
)
print "items ", items
Der django Filter ist E-Mail-Adresse drucken die Benutzer gesucht, die innerhalb des Datumsbereich fällt. Aber der Code auch habe druckt E-Mail, die nicht durchsucht wurde, sondern fällt in den Datumsbereich
Hier ist das Modell
class Order(models.Model):
client = models.ForeignKey(User, related_name = "order_user")
order_number = models.CharField(max_length = 12)null=True)
terms_and_conditions = models.BooleanField(default=False)
order_status = models.CharField(max_length = 20, choices = ORDER_STATUS, default = "new")
created_on = models.DateTimeField(auto_now_add = True)
edited_on = models.DateTimeField(auto_now_add = False)
def __unicode__(self):
return self.order_number
Ich kann das in Django 1.8 nicht reproduzieren. Zwei 'Q'-Argumente sollten dem Operator' & 'entsprechen, dh' Q (client__email__iexact = user_search) und Q (created_on__range = (start_datum, end_datum) '.) Beachten Sie, dass Sie' Q' hier gar nicht brauchen. Ihr Code könnte zu 'Order.objects.filter '(client__email__iexact = user_search, created_on__range = (Start_Datum, Enddatum))' ' – Alasdair
@Alasdair Used & Operator, aber druckt immer noch E-Mail-Adresse Ich habe nicht nach – uche
Mein Punkt ist, dass Ihre Der vorhandene Code ** sollte keine E-Mail-Adressen zurückgeben, wenn das Datum außerhalb des Bereichs liegt. Es kann hilfreich sein, wenn Sie mehr Code anzeigen, der das Problem reproduzieren kann, und die Ergebnisse, die Sie erhalten (Sie haben den Server nach dem Ändern des Codes nicht neu gestartet.) – Alasdair