विषय पर बढ़ें

केवल dफ़ील्ड

mar, आपको इसकी नमूना में सामान्य pydक्षेत्रों की घोषणा करने की अनुमति देता है, इसलिए आप सभी बुनियादी और कस्टम pydक्षेत्रों जैसे str, int, HttpUrl, PaymentCardNumber, और बहुत कुछ एक्सेस कर सकते हैं।

आप उन क्षेत्रों की भी घोषणा कर सकते हैं जो केवल व्यक्तिगत क्षेत्रों के बजाय नेस्टेड-केवल dमॉडल का नेतृत्व करते हैं।

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

यदि mar dफ़ील्ड के मान को हल नहीं कर सकता है, तो यह डेटाबेस से डेटा लोड करने के दौरान विफल हो जाएगा और घोषित dफ़ील्ड के लिए आवश्यक मान की कमी होगी।

मान प्रदान करने के विकल्प नीचे वर्णित हैं।

बेशक, आप उनमें से कुछ या सभी को एक ही नमूना में जोड़ सकते हैं।

वैकल्पिक क्षेत्र

यदि फ़ील्ड वैकल्पिक पर सेट है, तो यह प्रदान नहीं किए जाने पर "कोई नहीं" में चूक करता है, जो कि डेटाबेस से लोडिंग के दौरान होता है।

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
base_ormar_config = ormar। marConfig (
    मेटाडेटा = वर्गधर्मी। मेटाडेटा (),
    डेटाबेस = डेटाबेस। डेटाबेस (DATABASE_URL),
)


क्लास मॉडलटेस्ट (ormar. Model):
    ormar _ config = आधार _ ormar _ config कॉपी ()

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 200)
    संख्या: वैकल्पिक [PaymentCardNumber]

टेस्ट = मॉडलटेस्ट (name = "Test")
test.name करें
परीक्षण करें। संख्या कोई नहीं है
Test.= "123456789015"

प्रतीक्षा test.save ()
test_check = MoTest.का इंतजार करें ()

test_check.name करें
# लोड करने के बाद यह वापस कोई नहीं है
टेस्ट _ चेक नंबर कोई नहीं है

डिफ़ॉल्ट मान के साथ फ़ील्ड

डिफ़ॉल्ट मान सेट करके, यह मान आरंभीकरण और डेटाबेस लोडिंग के दौरान सेट किया जाएगा। ध्यान दें कि डिफ़ॉल्ट मान को "कोई नहीं" पर सेट करना इस फ़ील्ड को "वैकल्पिक" पर सेट करने के समान है।

 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
base_ormar_config = ormar। marConfig (
    मेटाडेटा = वर्गधर्मी। मेटाडेटा (),
    डेटाबेस = डेटाबेस। डेटाबेस (DATABASE_URL),
)


क्लास मॉडलटेस्ट (ormar. Model):
    ormar _ config = आधार _ ormar _ config कॉपी ()

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 200)
    Url: Httpl = https://www.example.com

टेस्ट = मॉडलटेस्ट (name = "Test")
test.name करें
परीक्षण करें। url https://www.example.com

Test.url = https://www.sdta.ada.pt
परीक्षण करें। url https://www.sdta.ada.pt

प्रतीक्षा test.save ()
test_check = MoTest.का इंतजार करें ()

test_check.name करें
# लोड करने के बाद यह डिफ़ॉल्ट पर वापस आ गया है
परीक्षण _ चेक url == https://www.example.com

डिफ़ॉल्ट फैक्टरी फ़ंक्शन

डिफ़ॉल्ट \ _ फ़ंक्शन सेट करके, फ़ंक्शन कॉल का परिणाम आरंभीकरण पर सेट किया जाता है और हर बार डेटाबेस लोड किया जाता है।

 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
36
37
38
39
40
41
42
43
pydantic, से आयातित क्षेत्र
# ...


base_ormar_config = ormar। marConfig (
    मेटाडेटा = वर्गधर्मी। मेटाडेटा (),
    डेटाबेस = डेटाबेस। डेटाबेस (DATABASE_URL),
)


CARD_NUMBERS = [
    "123456789007",
    "123456789015",
    "123456789023",
    "123456789031",
    "123456789049",
]


Dget_number ():
    बेतरतीब ढंग से लौटें (CARD_NUMBERS)


क्लास मॉडलटेस्ट 2 (ormar. Model):
    ormar _ config = आधार _ ormar _ config कॉपी ()

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 200)
    # ध्यान दें कि आप फ़ंक्शन को कॉल नहीं करते हैं, बस संदर्भ पास करें
    संख्या: भुगतान कार्ड संख्या = फ़ील्ड (default_factory = get_number)

# ध्यान दें कि आप अभी भी एक मूल्य प्रदान कर सकते हैं
टेस्ट = मॉडलटेस्ट 2 (नाम = "टेस्ट 2", नंबर = "400000000000000002")
test.name = = "टेस्ट 2"
परीक्षण करें। संख्या == "400000000000000002"

प्रतीक्षा test.save ()
test_check = MoTest2.का इंतजार करें ()

test_check.name = = "टेस्ट 2"
# लोड मान CARD_NUMBERS में से एक होने के लिए सेट है
CARD_NUMBERS में परीक्षण _ चेक नंबर डालें
परीक्षण _ जाँच करें! = परीक्षण

__इनिट _\ _ में कस्टम सेटिंग्स

आप \ _ \ से पहले सुपर () init विधि कह सकते हैं_इनिट _\ _ () विधि इस फ़ील्ड के लिए एक मान प्रदान करती है।

 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
36
37
38
39
40
41
बेसमॉडल पाइडेंटिक से आयात किया गया
# ...


base_ormar_config = ormar। marConfig (
    मेटाडेटा = वर्गधर्मी। मेटाडेटा (),
    डेटाबेस = डेटाबेस। डेटाबेस (DATABASE_URL),
)


क्लास पाइडेंटिकटेस्ट (बेसमॉडल):
    ए: str
    बीबी: इंट


क्लास मॉडलटेस्ट 3 (ormar. Model):
    ormar _ config = आधार _ ormar _ config कॉपी ()

    # अपने कस्टम init फ़ंक्शन प्रदान करें
    डेफ __ इनिट__ (self, ** kwargs):
        डिफ़ॉल्ट मान के बिना आवश्यक फ़ील्ड के लिए # मान जोड़ें
        Kwar["pydantic_test"] = dantic(Aa = "यादृच्छिक", bb = 42)
        # ऑर्मर को कॉल करना याद रखें। मॉडल init!
        सुपर (). __init__ (** kwargs)

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 200)
    pydantic_test: dantic

टेस्ट = मॉडलटेस्ट 3 (name = "Test3")
test.name = = "टेस्ट 3"
परीक्षण pydantic_test.bb
Test.pydantic.aa = "नया मूल्य"
परीक्षण करें। pydantic.aa == "नया मूल्य"

प्रतीक्षा test.save ()
test_check = MoTest3.का इंतजार करें ()

test_check.name = = "टेस्ट 3"
# लोड करने के बाद यह init में प्रदान किए गए मूल्य पर वापस आ गया है
परीक्षण _ चेक pydantic_test = = "यादृच्छिक"

!!!चेतावनी: यदि आप उपरोक्त तरीकों में से एक में मान प्रदान नहीं करते हैं, तो डेटाबेस से लोड करते समय एक Validationफेंक दिया जाएगा।