विषय पर बढ़ें

कुल फ़ंक्शन

वर्तमान में, छह एकत्रीकरण कार्यों का समर्थन किया जाता है।

  • count(distinct: bool = True) -> int

  • अस्तित्व () -> बूलियन

  • सम (कॉलम) -> मनमाना

  • औसत (स्तंभ) -> मनमाना

  • मिनट (कॉलम) -> कोई भी

  • अधिकतम (स्तंभ) -> मनमाना

  • क्वेरी सेट एजेंट

    • QuerysetProxy.count(distinct=True) विधि
    • QueryProx() विधि
    • QueryProx(कॉलम) विधि
    • QueryProxg (कॉलम) विधि
    • QueryProx(स्तंभ) विधि
    • QueryProx(स्तंभ) विधि

गिनती

count(distinct: bool = True) -> int

दिए गए मानदंडों से मेल खाने वाली पंक्तियों की संख्या लौटाता है (यानी फ़िल्टर और बहिष्करण लागू करें)। यदि विशिष्ट सत्य है (the default), यह चयनित प्राथमिक पंक्तियों की संख्या लौटाता है। यदि गलत है, तो गिनती वापस की गई पंक्तियों की कुल संख्या होगी (एक से कई या कई से कई बाईं ओर चयन \ _ lated तालिका में शामिल होने के लिए अतिरिक्त पंक्तियों सहित)। गलत वर्कफ़्लोज़ के लिए विरासत (त्रुटिपूर्ण) व्यवहार है जो इस पर निर्भर करता है।

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
क्लास बुक (ormar. Model):
    ormar_config = ormar। marConfig (
        डेटाबेस = डेटाबेस। डेटाबेस (DATABASE_URL),
        मेटाडेटा = वर्गधर्मी। मेटाडेटा (),
        टेबलनाम = "पुस्तक"
    )

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    शीर्षक: str = ormar। स्ट्रिंग (max_length = 200)
    लेखक: str = ormar। स्ट्रिंग (max_length = 100)
    शैली: str = ormar। स्ट्रिंग (
        अधिकतम_लंबाई = 100,
        डिफ़ॉल्ट = "कथा",
        विकल्प = ["फिक्शन", "साहसिक", "इतिहास", "काल्पनिक "],
    )


# पुस्तकों के लिए db में पंक्तियों की गिनती नमूना
no_of_books = प्रतीक्षा करें

मौजूद है

अस्तित्व () -> बूलियन

यह पुष्टि करने के लिए एक बूलियन मान लौटाता है कि क्या पंक्तियाँ हैं जो दिए गए मानदंडों को पूरा करती हैं (फ़िल्टर और बहिष्करण के साथ लागू)।

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
क्लास बुक (ormar. Model):
    ormar_config = ormar। marConfig (
        डेटाबेस = डेटाबेस। डेटाबेस (DATABASE_URL),
        मेटाडेटा = वर्गधर्मी। मेटाडेटा (),
        टेबलनाम = "पुस्तक"
    )

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    शीर्षक: str = ormar। स्ट्रिंग (max_length = 200)
    लेखक: str = ormar। स्ट्रिंग (max_length = 100)
    शैली: str = ormar। स्ट्रिंग (
        अधिकतम_लंबाई = 100,
        डिफ़ॉल्ट = "कथा",
        विकल्प = ["फिक्शन", "साहसिक", "इतिहास", "काल्पनिक "],
    )


# एक बूलियन मान देता है यदि दी गई पंक्ति मौजूद है
है_नमूना = प्रतीक्षा करें (title = 'Sample').मौजूद है ()

और

सम (कॉलम) -> मनमाना

दिए गए मानदंडों से मेल खाने वाली पंक्तियों के स्तंभों का योग लौटाता है (फ़िल्टर लागू करें, यदि पहले सेट किया गया है तो बाहर करें)।

आप संबंधित स्तंभों सहित एक या अधिक स्तंभ नाम पास कर सकते हैं।

अब तक, पारित प्रत्येक कॉलम को अलग से एकत्र किया जाता है (so su)m (col1 + col2) संभव नहीं है, आप सु का उपयोग कर सकते हैंm (col1, col2) और फिर अजगर में लौटे 2 का योग जोड़ें)।

आप गैर-संख्यात्मक स्तंभों को योग नहीं कर सकते।

यदि आप एक कॉलम एकत्र करते हैं, तो परिणाम के रूप में सीधे एक मान लौटाएं, और यदि आप कई कॉलम एकत्र करते हैं, तो कॉलम युक्त एक शब्दकोश लौटाएं: परिणाम जोड़ी

दी गई नमूना इस प्रकार है

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from typing import Optional

import databases
import ormar
import sqlalchemy
from tests.settings import DATABASE_URL

database = databases.Database(DATABASE_URL)
metadata = sqlalchemy.MetaData()


base_ormar_config = ormar.OrmarConfig(
    metadata=metadata,
    database=database,
)


class Author(ormar.Model):
    ormar_config = base_ormar_config.copy(tablename="authors", order_by=["-name"])

    id: int = ormar.Integer(primary_key=True)
    name: str = ormar.String(max_length=100)


class Book(ormar.Model):

    ormar_config = base_ormar_config.copy(
        tablename="books", order_by=["year", "-ranking"]
    )

    id: int = ormar.Integer(primary_key=True)
    author: Optional[Author] = ormar.ForeignKey(Author)
    title: str = ormar.String(max_length=100)
    year: int = ormar.Integer(nullable=True)
    ranking: int = ormar.Integer(nullable=True)

एक उदाहरण उपयोग इस तरह लग सकता है

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
लेखक = प्रतीक्षा लेखक (name = "Author 1").सहेजें ()
प्रतीक्षारत पुस्तकें (शीर्षक = "पुस्तक 1", वर्ष = 1920, रैंकिंग = 3, लेखक = लेखक)। ()
प्रतीक्षारत पुस्तकें (शीर्षक = "पुस्तक 2", वर्ष = 1930, रैंकिंग = 1, लेखक = लेखक)। ()
प्रतीक्षारत पुस्तकें (शीर्षक = "पुस्तक 3", वर्ष = 1923, रैंकिंग = 5, लेखक = लेखक)। ()

जोर से प्रतीक्षा करें .("year") = 5773
परिणाम = प्रतीक्षा करेंm (["year", "ranking"])
अनुमानित परिणाम = = डिक्ट (वर्ष = 5773, रैंकिंग = 9)

कोशिश:
    # स्ट्रिंग कॉलम नहीं जोड़ सकते
    प्रतीक्षारत .("title")
सिवाय ओमार के। QueryDefinitionError
    पास

जोर से प्रतीक्षा करें or.select_related ("books").sum ("books__year") == 5773
परिणाम = प्रतीक्षा करें or.select_related ("books").योग (
    ["किताबें __ वर्ष", "किताबें __ रैंकिंग"]
)
परिणाम = = डिक्ट (books__year = 5773, books__ranking=9)

अभिकथन (
    Author.objects.select_related ("books") का इंतजार करें
    । फ़िल्टर (books__year__lt = 1925)
    । सुm ("books__year")
    == 3843
)

औसत

औसत (स्तंभ) -> मनमाना

दिए गए मानदंडों से मेल खाने वाली पंक्तियों के लिए स्तंभों का औसत लौटाता है (फ़िल्टर लागू करें, यदि पहले सेट किया गया है तो बाहर करें)।

आप संबंधित स्तंभों सहित एक या अधिक स्तंभ नाम पास कर सकते हैं।

अब तक, पारित प्रत्येक कॉलम को अलग से एकत्र किया जाता है (so su)m (col1 + col2) संभव नहीं है, आप सु का उपयोग कर सकते हैंm (col1, col2) और फिर अजगर में लौटे 2 का योग जोड़ें)।

आप एक गैर-संख्यात्मक कॉलम को औसत नहीं कर सकते।

यदि आप एक कॉलम एकत्र करते हैं, तो परिणाम के रूप में सीधे एक मान लौटाएं, और यदि आप कई कॉलम एकत्र करते हैं, तो कॉलम युक्त एक शब्दकोश लौटाएं: परिणाम जोड़ी

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from typing import Optional

import databases
import ormar
import sqlalchemy
from tests.settings import DATABASE_URL

database = databases.Database(DATABASE_URL)
metadata = sqlalchemy.MetaData()


base_ormar_config = ormar.OrmarConfig(
    metadata=metadata,
    database=database,
)


class Author(ormar.Model):
    ormar_config = base_ormar_config.copy(tablename="authors", order_by=["-name"])

    id: int = ormar.Integer(primary_key=True)
    name: str = ormar.String(max_length=100)


class Book(ormar.Model):

    ormar_config = base_ormar_config.copy(
        tablename="books", order_by=["year", "-ranking"]
    )

    id: int = ormar.Integer(primary_key=True)
    author: Optional[Author] = ormar.ForeignKey(Author)
    title: str = ormar.String(max_length=100)
    year: int = ormar.Integer(nullable=True)
    ranking: int = ormar.Integer(nullable=True)

एक उदाहरण उपयोग इस तरह लग सकता है

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
लेखक = प्रतीक्षा लेखक (name = "Author 1").सहेजें ()
प्रतीक्षारत पुस्तकें (शीर्षक = "पुस्तक 1", वर्ष = 1920, रैंकिंग = 3, लेखक = लेखक)। ()
प्रतीक्षारत पुस्तकें (शीर्षक = "पुस्तक 2", वर्ष = 1930, रैंकिंग = 1, लेखक = लेखक)। ()
प्रतीक्षारत पुस्तकें (शीर्षक = "पुस्तक 3", वर्ष = 1923, रैंकिंग = 5, लेखक = लेखक)। ()

पूर्णांक बनाना (फ्लोट) का इंतजार करें ("year")), 2) == 1924.33
परिणाम = प्रतीक्षा करें (["year", "ranking"])
पूर्णांक बनाना (फ्लोट) (result.get ("year")), 2) == 1924.33
परिणाम प्राप्त करें। ("रैंकिंग") = =

कोशिश:
    # एवीजी स्ट्रिंग कॉलम नहीं कर सकते
    प्रतीक्षा करें .g ("title")
सिवाय ओमार के। QueryDefinitionError
    पास

परिणाम = प्रतीक्षा करें or.select_related ("books").g ("books__year")
पूर्णांक बनाना (float (result), 2) == 1924.33
परिणाम = प्रतीक्षा करें or.select_related ("books").g (
    ["किताबें __ वर्ष", "किताबें __ रैंकिंग"]
)
पूर्णांक बनाना (float) ("books__year")), 2) == 1924.33
परिणाम डालें ("books__ranking") = =

अभिकथन (
    Author.objects.select_related ("books") का इंतजार करें
    । फ़िल्टर (books__year__lt = 1925)
    । औसत ("books__year")
    == 1921.5
)

मिनट

मिनट (कॉलम) -> कोई भी

पंक्ति के लिए स्तंभ का न्यूनतम मान लौटाता है जो दिए गए मानदंडों से मेल खाता है (फ़िल्टर के साथ लागू किया जाता है, यदि पहले सेट किया गया है तो बाहर रखा गया है)।

आप संबंधित स्तंभों सहित एक या अधिक स्तंभ नाम पास कर सकते हैं।

अब तक, पारित प्रत्येक कॉलम को अलग से एकत्र किया जाता है (so su)m (col1 + col2) संभव नहीं है, आप सु का उपयोग कर सकते हैंm (col1, col2) और फिर अजगर में लौटे 2 का योग जोड़ें)।

यदि आप एक कॉलम एकत्र करते हैं, तो परिणाम के रूप में सीधे एक मान लौटाएं, और यदि आप कई कॉलम एकत्र करते हैं, तो कॉलम युक्त एक शब्दकोश लौटाएं: परिणाम जोड़ी

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from typing import Optional

import databases
import ormar
import sqlalchemy
from tests.settings import DATABASE_URL

database = databases.Database(DATABASE_URL)
metadata = sqlalchemy.MetaData()


base_ormar_config = ormar.OrmarConfig(
    metadata=metadata,
    database=database,
)


class Author(ormar.Model):
    ormar_config = base_ormar_config.copy(tablename="authors", order_by=["-name"])

    id: int = ormar.Integer(primary_key=True)
    name: str = ormar.String(max_length=100)


class Book(ormar.Model):

    ormar_config = base_ormar_config.copy(
        tablename="books", order_by=["year", "-ranking"]
    )

    id: int = ormar.Integer(primary_key=True)
    author: Optional[Author] = ormar.ForeignKey(Author)
    title: str = ormar.String(max_length=100)
    year: int = ormar.Integer(nullable=True)
    ranking: int = ormar.Integer(nullable=True)

एक उदाहरण उपयोग इस तरह लग सकता है

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
लेखक = प्रतीक्षा लेखक (name = "Author 1").सहेजें ()
प्रतीक्षारत पुस्तकें (शीर्षक = "पुस्तक 1", वर्ष = 1920, रैंकिंग = 3, लेखक = लेखक)। ()
प्रतीक्षारत पुस्तकें (शीर्षक = "पुस्तक 2", वर्ष = 1930, रैंकिंग = 1, लेखक = लेखक)। ()
प्रतीक्षारत पुस्तकें (शीर्षक = "पुस्तक 3", वर्ष = 1923, रैंकिंग = 5, लेखक = लेखक)। ()

जोर से प्रतीक्षा करें
परिणाम = प्रतीक्षा करें (["year", "ranking"])
अनुमानित परिणाम = = डिक्ट (वर्ष = 1920, रैंकिंग = 1)

जोर से प्रतीक्षा करें . ("title ") == "पुस्तक 1"

जोर से प्रतीक्षा करें or.select_related ("books") . ("books__year") = = 1920
परिणाम = प्रतीक्षा करें or.select_related ("books").(
    ["किताबें __ वर्ष", "किताबें __ रैंकिंग"]
)
परिणाम = = डिक्ट (books__year = 1920, books__ranking=1)

अभिकथन (
    Author.objects.select_related ("books") का इंतजार करें
    । फ़िल्टर (पुस्तकें__year__gt=1925)
    । न्यूनतम ("books__year")
    == 1930
)

अधिकतम

अधिकतम (स्तंभ) -> मनमाना

दिए गए मानदंडों से मेल खाने वाली पंक्ति के लिए स्तंभ का अधिकतम मान लौटाता है (फ़िल्टर के साथ लागू किया जाता है, यदि पहले सेट किया गया है)।

पंक्ति के लिए स्तंभ का न्यूनतम मान लौटाता है जो दिए गए मानदंडों से मेल खाता है (फ़िल्टर के साथ लागू किया जाता है, यदि पहले सेट किया गया है तो बाहर रखा गया है)।

आप संबंधित स्तंभों सहित एक या अधिक स्तंभ नाम पास कर सकते हैं।

अब तक, पारित प्रत्येक कॉलम को अलग से एकत्र किया जाता है (so su)m (col1 + col2) संभव नहीं है, आप सु का उपयोग कर सकते हैंm (col1, col2) और फिर अजगर में लौटे 2 का योग जोड़ें)।

यदि आप एक कॉलम एकत्र करते हैं, तो परिणाम के रूप में सीधे एक मान लौटाएं, और यदि आप कई कॉलम एकत्र करते हैं, तो कॉलम युक्त एक शब्दकोश लौटाएं: परिणाम जोड़ी

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from typing import Optional

import databases
import ormar
import sqlalchemy
from tests.settings import DATABASE_URL

database = databases.Database(DATABASE_URL)
metadata = sqlalchemy.MetaData()


base_ormar_config = ormar.OrmarConfig(
    metadata=metadata,
    database=database,
)


class Author(ormar.Model):
    ormar_config = base_ormar_config.copy(tablename="authors", order_by=["-name"])

    id: int = ormar.Integer(primary_key=True)
    name: str = ormar.String(max_length=100)


class Book(ormar.Model):

    ormar_config = base_ormar_config.copy(
        tablename="books", order_by=["year", "-ranking"]
    )

    id: int = ormar.Integer(primary_key=True)
    author: Optional[Author] = ormar.ForeignKey(Author)
    title: str = ormar.String(max_length=100)
    year: int = ormar.Integer(nullable=True)
    ranking: int = ormar.Integer(nullable=True)

एक उदाहरण उपयोग इस तरह लग सकता है

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
लेखक = प्रतीक्षा लेखक (name = "Author 1").सहेजें ()
प्रतीक्षारत पुस्तकें (शीर्षक = "पुस्तक 1", वर्ष = 1920, रैंकिंग = 3, लेखक = लेखक)। ()
प्रतीक्षारत पुस्तकें (शीर्षक = "पुस्तक 2", वर्ष = 1930, रैंकिंग = 1, लेखक = लेखक)। ()
प्रतीक्षारत पुस्तकें (शीर्षक = "पुस्तक 3", वर्ष = 1923, रैंकिंग = 5, लेखक = लेखक)। ()

जोर से प्रतीक्षा करें ।objects.max ("year") == 1930
परिणाम = प्रतीक्षा करें (["year", "ranking"])
अनुमानित परिणाम = = डिक्ट (वर्ष = 1930, रैंकिंग = 5)

जोर से प्रतीक्षा करें . ("title ") == "पुस्तक 3"

जोर से प्रतीक्षा करें or.select_related ("books").अधिकतम ("books__year") == 1930
परिणाम = प्रतीक्षा करें or.select_related ("books").अधिकतम (
    ["किताबें __ वर्ष", "किताबें __ रैंकिंग"]
)
परिणाम = = डिक्ट (books__year = 1930, books__ranking=5)

अभिकथन (
    Author.objects.select_related ("books") का इंतजार करें
    । फ़िल्टर (books__year__lt = 1925)
    । अधिकतम ("books__year")
    == 1923
)

QueryProविधि

प्रासंगिक MToफ़ील्ड और seसीधे एक्सेस करते समय, संबंधित मॉडल की एक सूची वापस आ जाती है।

लेकिन यह क्वेरीसेट एपीआई के एक सबसेट को भी उजागर करता है, इसलिए आप मूल नमूना से सीधे संबंधित मॉडल को फ़िल्टर कर सकते हैं, बना सकते हैं, चुन सकते हैं।

गिनती

ऊपर दिए गए गणना फ़ंक्शन के समान है, लेकिन आपको संबंध के दूसरे छोर पर संबंधित वस्तुओं से स्तंभों का चयन करने की अनुमति देता है।

!!!QueryProके बारे में अधिक जानने के लिए, QueryProअनुभाग पर जाएं

मौजूद है

ऊपर उपस्थिति फ़ंक्शन के समान है, लेकिन आपको रिश्ते के दूसरे छोर पर संबंधित वस्तुओं से स्तंभों का चयन करने की अनुमति देता है।

और

ऊपर दिए गए योग फ़ंक्शन के समान है, लेकिन आपको रिश्ते के दूसरे छोर पर संबंधित वस्तुओं के स्तंभों को योग करने की अनुमति देता है।

औसत

ऊपर एवीजी फ़ंक्शन के समान है, लेकिन आपको रिश्ते के दूसरे छोर पर संबंधित वस्तुओं के स्तंभों को औसत करने की अनुमति देता है।

मिनट

ऊपर दिए गए न्यूनतम फ़ंक्शन के समान है, लेकिन आपको रिश्ते के दूसरे छोर पर संबंधित वस्तुओं से कम से कम स्तंभों का चयन करने की अनुमति देता है।

अधिकतम

अधिकतम फ़ंक्शन बिल्कुल ऊपर के समान है, लेकिन आपको रिश्ते के दूसरे छोर पर संबंधित ऑब्जेक्ट से सबसे बड़े कॉलम का चयन करने की अनुमति देता है।

!!!टिप QueryProके बारे में अधिक जानने के लिए, yProअनुभाग पर जाएं