As usual, great tutorial. I hope that in the next video you include OuterRef and Subquery. This is a more advanced topic, but it packs a ton of functionality. ie. Let's say you have a company with many offices and one of those offices is market as the HQ. With OuterRef and Subquery, you can annotate the company address from the specific office in the many to one related table marked as the HQ and also aggregate the total amount of employees as a Sum of each office.
A little recap: Annotate by itself (without values()) doesn't do grouping even with use of aggregate functions (which just duplicate argumented field in such case); We use annotate() with values() and we don't use it with only() (at least my tests proved last as useless); We can start from both child and parent Model and get the same result So this: Books.objects.values_list("author__firstname", "author__lastname").annotate( total=Count("id") ) And that: q = Author.objects.values_list("firstname", "lastname").annotate( total=Count("books") ) will do the same (p.s. "books" in the last statement refers to "related_query_name" specified in ForeignKey field of the "Books" model );
hi, do you have solution for Like: Multiple table field Sum calculation from parent model ---------- to get stock qty each product (stock qty= purchase_qty - purchase_return_qty - sales_qty + sales_qty )
What I dislike about youtube is that there's a need in comments in order to promote a channel, it might be ok in some cases but when it's about education I actually wanna see some related to subject discussions on top instead of "thanks author you are so great"... Anyway what I failed to understand is when annotate is used to add extra field to query set and when to group by fields and the similar about values. As it does return dictionaries like? Then why can we do things like ModelName.objects.values('smth').annotate(Agregate func) and then use functions like order by to it. Don't we need Django specific query sets to use those functions, or we can use it to any dictionary?
The annotate() function will add the annotated field to each object in the queryset. Importantly, annotate returns a queryset, so you can chain other methods like values() and order_by(), etc. The aggregate() function, on the other hand, returns a dictionary containing all the aggregations passed to the function. Queryset methods don’t work on dictionaries, so chaining additional methods like order_by() won’t work.
# fungction to get one cctv location and past it to leaflet map def Cctvlist(request, id): # get cctv category cctvs = get_object_or_404(Daftarcctv, id = id) # show all cctv location in cctv category cctv = cctvs.cctvdetail_set.all() # lopping all cctv location for i in cctv: # get one cctv location from i looping showloc = Cctvlocation.objects.get(pk=i) # i want to get cctv location row to past in json format # and get values lat, long from varible "showloc" # BUT ALWAYS FAIL, PLEASE SHOW ME A SOLUTION cctvsloc = list(Cctvlocation.objects.values('latitude', 'longitude')[:100]) print(cctvsloc) return render(request, 'cctvkorem/daftarcctv.html', {'cctvs':cctvs, 'cctv':cctv, 'showloc':showloc })
Playlist link: ruclips.net/video/EsBqIZmR2Uc/видео.html
These are genuinely some of the most helpful tutorials on the Internet.
No fluff, just constant gold.
Wow, thanks a lot! Delighted to hear that!
Best series on Django advance topics. I have improved the performance of my project a lot. you are doing a great job creating a lot of value.
Thanks a lot, glad to hear it, cheers!
As usual, great tutorial. I hope that in the next video you include OuterRef and Subquery. This is a more advanced topic, but it packs a ton of functionality. ie. Let's say you have a company with many offices and one of those offices is market as the HQ. With OuterRef and Subquery, you can annotate the company address from the specific office in the many to one related table marked as the HQ and also aggregate the total amount of employees as a Sum of each office.
Thank you! I'll cover these topics very soon - not the next video but the one after, I think. But yeah, will definitely cover it!
Very nice explanation on aggregate and annotate.....thank you so much
Thanks very much!
I just want to thank you Master 🙌🏾before I finish watching the tutorial !
Thanks as always! 😄
Excellent video! Many thanks!
Thanks a lot!
Nice plants as well as the video
Thanks a lot! 🪴😄
Great video! you explained in less than an hour what probably took me a week to learn on my own awhile back. Love it!
Thanks a lot Rob, much appreciated as always!
This series has been incredible!
Thanks a lot Peter!
Thanks 👍 for this tutorial.I have a microfinance project that will require this.
Hope the video will help! 👍
Amazing every concept clear.
Love from India bro. ✌️
Thanks a lot bro! Glad it was clear and greetings from Scotland!
SUPER high quality video as always; great job!
Thanks a lot 🙏
bro you deserve more followers
Thanks man!
Thanks for great videos
You’re welcome, thanks a lot for watching!
Incredible. That was so helpful. Thank you man👊
Thanks a lot man! Glad it helped.
awesome content Mate!! I learned many new concepts in this video and will try to apply in my projects too 😁
Awesome, thanks a lot, glad you liked the video!
Another brilliant video. thank you
Thanks a lot!
So much useful information in just one video. Thanks
Glad to hear it, thanks a lot for watching and commenting!
A little recap:
Annotate by itself (without values()) doesn't do grouping even with use of aggregate functions (which just duplicate argumented field in such case);
We use annotate() with values() and we don't use it with only() (at least my tests proved last as useless);
We can start from both child and parent Model and get the same result
So this:
Books.objects.values_list("author__firstname", "author__lastname").annotate(
total=Count("id")
)
And that:
q = Author.objects.values_list("firstname", "lastname").annotate(
total=Count("books")
)
will do the same (p.s. "books" in the last statement refers to "related_query_name" specified in ForeignKey field of the "Books" model );
Great tutorial.
Any caching vids coming?
Thanks! Yes, I'll be doing stuff with Django + Redis in the near future.
Thanks !!
Thanks for watching!
It's a very interesting and important part of working with DB. Thank you for sharing!!!
thank
Thanks for watching!
Do a video on channel and web socket
In the future for sure!
hi, do you have solution for Like:
Multiple table field Sum calculation from parent model ---------- to get stock qty each product (stock qty= purchase_qty - purchase_return_qty - sales_qty + sales_qty )
Is there any package you use for runscript this is very useful for testing queries
It’s part of django-extensions which I always add to django projects
can you make tutorial how to use async queryset on django 4?
Yes, definitely!
I wonder why aggregation results always is too big.? Comapre to use for loop
What I dislike about youtube is that there's a need in comments in order to promote a channel, it might be ok in some cases but when it's about education I actually wanna see some related to subject discussions on top instead of "thanks author you are so great"...
Anyway what I failed to understand is when annotate is used to add extra field to query set and when to group by fields and the similar about values. As it does return dictionaries like? Then why can we do things like ModelName.objects.values('smth').annotate(Agregate func) and then use functions like order by to it. Don't we need Django specific query sets to use those functions, or we can use it to any dictionary?
The annotate() function will add the annotated field to each object in the queryset. Importantly, annotate returns a queryset, so you can chain other methods like values() and order_by(), etc.
The aggregate() function, on the other hand, returns a dictionary containing all the aggregations passed to the function. Queryset methods don’t work on dictionaries, so chaining additional methods like order_by() won’t work.
# fungction to get one cctv location and past it to leaflet map
def Cctvlist(request, id):
# get cctv category
cctvs = get_object_or_404(Daftarcctv, id = id)
# show all cctv location in cctv category
cctv = cctvs.cctvdetail_set.all()
# lopping all cctv location
for i in cctv:
# get one cctv location from i looping
showloc = Cctvlocation.objects.get(pk=i)
# i want to get cctv location row to past in json format
# and get values lat, long from varible "showloc"
# BUT ALWAYS FAIL, PLEASE SHOW ME A SOLUTION
cctvsloc = list(Cctvlocation.objects.values('latitude', 'longitude')[:100])
print(cctvsloc)
return render(request, 'cctvkorem/daftarcctv.html', {'cctvs':cctvs, 'cctv':cctv, 'showloc':showloc })