difference between filter with multiple arguments and chain filter in django

前端 未结 9 790
[愿得一人]
[愿得一人] 2020-11-30 20:08

What is the difference between filter with multiple arguments and chain filter in django?

9条回答
  •  攒了一身酷
    2020-11-30 20:51

    You can use the connection module to see the raw sql queries to compare. As explained by Yuji's, for the most part they are equivalent as shown here:

    >>> from django.db import connection
    >>> samples1 = Unit.objects.filter(color="orange", volume=None)
    >>> samples2 = Unit.objects.filter(color="orange").filter(volume=None)
    >>> list(samples1)
    []
    >>> list(samples2)
    []
    >>> for q in connection.queries:
    ...     print q['sql']
    ... 
    SELECT `samples_unit`.`id`, `samples_unit`.`color`, `samples_unit`.`volume` FROM `samples_unit` WHERE (`samples_unit`.`color` = orange  AND `samples_unit`.`volume` IS NULL)
    SELECT `samples_unit`.`id`, `samples_unit`.`color`, `samples_unit`.`volume` FROM `samples_unit` WHERE (`samples_unit`.`color` = orange  AND `samples_unit`.`volume` IS NULL)
    >>> 
    

提交回复
热议问题