👻 Check our latest review to choose the best laptop for Machine Learning engineers and Deep learning tasks!
Consider simple Django models Event
and Participant
:
class Event(models.Model):
title = models.CharField(max_length=100)
class Participant(models.Model):
event = models.ForeignKey(Event, db_index=True)
is_paid = models.BooleanField(default=False, db_index=True)
It"s easy to annotate events query with total number of participants:
events = Event.objects.all().annotate(participants=models.Count("participant"))
How to annotate with count of participants filtered by is_paid=True
?
I need to query all events regardless of number of participants, e.g. I don"t need to filter by annotated result. If there are 0
participants, that"s ok, I just need 0
in annotated value.
The example from documentation doesn"t work here, because it excludes objects from query instead of annotating them with 0
.
Update. Django 1.8 has new conditional expressions feature, so now we can do like this:
events = Event.objects.all().annotate(paid_participants=models.Sum(
models.Case(
models.When(participant__is_paid=True, then=1),
default=0,
output_field=models.IntegerField()
)))
Update 2. Django 2.0 has new Conditional aggregation feature, see the accepted answer below.
👻 Read also: what is the best laptop for engineering students?
How to filter objects for count annotation in Django? __del__: Questions
How can I make a time delay in Python?
5 answers
I would like to know how to put a time delay in a Python script.
Answer #1
import time
time.sleep(5) # Delays for 5 seconds. You can also use a float value.
Here is another example where something is run approximately once a minute:
import time
while True:
print("This prints once a minute.")
time.sleep(60) # Delay for 1 minute (60 seconds).
Answer #2
You can use the sleep()
function in the time
module. It can take a float argument for sub-second resolution.
from time import sleep
sleep(0.1) # Time in seconds
How to filter objects for count annotation in Django? __del__: Questions
How to delete a file or folder in Python?
5 answers
How do I delete a file or folder in Python?
Answer #1
os.remove()
removes a file.os.rmdir()
removes an empty directory.shutil.rmtree()
deletes a directory and all its contents.
Path
objects from the Python 3.4+ pathlib
module also expose these instance methods:
pathlib.Path.unlink()
removes a file or symbolic link.pathlib.Path.rmdir()
removes an empty directory.
We hope this article has helped you to resolve the problem. Apart from How to filter objects for count annotation in Django?, check other __del__-related topics.
Want to excel in Python? See our review of the best Python online courses 2023. If you are interested in Data Science, check also how to learn programming in R.
By the way, this material is also available in other languages:
- Italiano How to filter objects for count annotation in Django?
- Deutsch How to filter objects for count annotation in Django?
- Français How to filter objects for count annotation in Django?
- Español How to filter objects for count annotation in Django?
- Türk How to filter objects for count annotation in Django?
- Русский How to filter objects for count annotation in Django?
- Português How to filter objects for count annotation in Django?
- Polski How to filter objects for count annotation in Django?
- Nederlandse How to filter objects for count annotation in Django?
- 中文 How to filter objects for count annotation in Django?
- 한국어 How to filter objects for count annotation in Django?
- 日本語 How to filter objects for count annotation in Django?
- हिन्दी How to filter objects for count annotation in Django?
California | 2023-03-24
Maybe there are another answers? What How to filter objects for count annotation in Django? exactly means?. Will get back tomorrow with feedback
Moscow | 2023-03-24
Simply put and clear. Thank you for sharing. How to filter objects for count annotation in Django? and other issues with Python functions was always my weak point 😁. Checked yesterday, it works!
Massachussetts | 2023-03-24
Maybe there are another answers? What How to filter objects for count annotation in Django? exactly means?. Checked yesterday, it works!