उपनाम
उपनाम किसी फ़ील्ड के लिए एक वैकल्पिक नाम है, जिसका उपयोग डेटा को क्रमबद्ध और डीसेरिएलाइज़ करते समय किया जाता है।
आप निम्नलिखित तरीकों से उपनाम निर्दिष्ट कर सकते हैं:
Fieldपरalias- एक
strहोना चाहिए
- एक
- [
Field] परvalidation_alias[pydantic.fields.Field]strका एक उदाहरण हो सकता है,AliasPath, याAliasChoices
- [
Field] परserialization_alias[pydantic.fields.Field]- एक
strहोना चाहिए
- एक
Configपरalias_generator- कॉल करने योग्य या
AliasGeneratorका उदाहरण हो सकता है
- कॉल करने योग्य या
alias , validation_alias और serialization_alias उपयोग कैसे करें के उदाहरणों के लिए, फ़ील्ड उपनाम देखें।
AliasPath और AliasChoices¶
??? एपीआई "एपीआई दस्तावेज़ीकरण"
[`pydantic.aliases.AliasPath`][pydantic.aliases.AliasPath]<br>
[`pydantic.aliases.AliasChoices`][pydantic.aliases.AliasChoices]<br>
validation_alias उपयोग करते समय पाइडेंटिक सुविधा के लिए दो विशेष प्रकार प्रदान करता है: AliasPath और AliasChoices ।
AliasPath उपयोग उपनामों का उपयोग करके किसी फ़ील्ड के लिए पथ निर्दिष्ट करने के लिए किया जाता है। उदाहरण के लिए:
from pydantic import BaseModel, Field, AliasPath
class User(BaseModel):
first_name: str = Field(validation_alias=AliasPath('names', 0))
last_name: str = Field(validation_alias=AliasPath('names', 1))
user = User.model_validate({'names': ['John', 'Doe']}) # (1)!
print(user)
#> first_name='John' last_name='Doe'
- हम फ़ील्ड उपनामों का उपयोग करके एक शब्दकोश को सत्यापित करने के लिए
model_validateउपयोग कर रहे हैं।
आप एपीआई संदर्भ में model_validate के बारे में अधिक विवरण देख सकते हैं।
'first_name' फ़ील्ड में, हम पहले नाम का पथ निर्दिष्ट करने के लिए उपनाम 'names' और अनुक्रमणिका 0 का उपयोग कर रहे हैं। 'last_name' फ़ील्ड में, हम अंतिम नाम का पथ निर्दिष्ट करने के लिए उपनाम 'names' और अनुक्रमणिका 1 का उपयोग कर रहे हैं।
उपनामों की पसंद को निर्दिष्ट करने के लिए AliasChoices का उपयोग किया जाता है। उदाहरण के लिए:
from pydantic import BaseModel, Field, AliasChoices
class User(BaseModel):
first_name: str = Field(validation_alias=AliasChoices('first_name', 'fname'))
last_name: str = Field(validation_alias=AliasChoices('last_name', 'lname'))
user = User.model_validate({'fname': 'John', 'lname': 'Doe'}) # (1)!
print(user)
#> first_name='John' last_name='Doe'
user = User.model_validate({'first_name': 'John', 'lname': 'Doe'}) # (2)!
print(user)
#> first_name='John' last_name='Doe'
- हम दोनों क्षेत्रों के लिए दूसरे उपनाम विकल्प का उपयोग कर रहे हैं।
- हम
'first_name'फ़ील्ड के लिए पहले उपनाम विकल्प का उपयोग कर रहे हैं और'last_name'फ़ील्ड के लिए दूसरे उपनाम विकल्प का उपयोग कर रहे हैं।
आप AliasPath के साथ भी AliasChoices उपयोग कर सकते हैं:
from pydantic import BaseModel, Field, AliasPath, AliasChoices
class User(BaseModel):
first_name: str = Field(validation_alias=AliasChoices('first_name', AliasPath('names', 0)))
last_name: str = Field(validation_alias=AliasChoices('last_name', AliasPath('names', 1)))
user = User.model_validate({'first_name': 'John', 'last_name': 'Doe'})
print(user)
#> first_name='John' last_name='Doe'
user = User.model_validate({'names': ['John', 'Doe']})
print(user)
#> first_name='John' last_name='Doe'
user = User.model_validate({'names': ['John'], 'last_name': 'Doe'})
print(user)
#> first_name='John' last_name='Doe'
उपनाम जनरेटर का उपयोग करना¶
आप एक कॉल करने योग्य (या कॉल करने योग्य वस्तुओं का समूह, AliasGenerator के माध्यम से) निर्दिष्ट करने के लिए Config के alias_generator पैरामीटर का उपयोग कर सकते हैं जो एक मॉडल में सभी फ़ील्ड के लिए उपनाम उत्पन्न करेगा। यह उपयोगी है यदि आप किसी मॉडल में सभी फ़ील्ड के लिए एक सुसंगत नामकरण परंपरा का उपयोग करना चाहते हैं, लेकिन प्रत्येक फ़ील्ड के लिए अलग-अलग उपनाम निर्दिष्ट नहीं करना चाहते हैं।
!!! नोट पाइडेंटिक तीन अंतर्निहित उपनाम जेनरेटर प्रदान करता है जिन्हें आप बॉक्स से बाहर उपयोग कर सकते हैं:
[`to_pascal`][pydantic.alias_generators.to_pascal]<br>
[`to_camel`][pydantic.alias_generators.to_camel]<br>
[`to_snake`][pydantic.alias_generators.to_snake]<br>
कॉल करने योग्य का उपयोग करना¶
कॉल करने योग्य का उपयोग करके यहां एक बुनियादी उदाहरण दिया गया है:
from pydantic import BaseModel, ConfigDict
class Tree(BaseModel):
model_config = ConfigDict(
alias_generator=lambda field_name: field_name.upper()
)
age: int
height: float
kind: str
t = Tree.model_validate({'AGE': 12, 'HEIGHT': 1.2, 'KIND': 'oak'})
print(t.model_dump(by_alias=True))
#> {'AGE': 12, 'HEIGHT': 1.2, 'KIND': 'oak'}
AliasGenerator उपयोग करना¶
??? एपीआई "एपीआई दस्तावेज़ीकरण"
[`pydantic.aliases.AliasGenerator`][pydantic.aliases.AliasGenerator]<br>
AliasGenerator एक वर्ग है जो आपको एक मॉडल के लिए एकाधिक उपनाम जेनरेटर निर्दिष्ट करने की अनुमति देता है। आप सत्यापन और क्रमबद्धता के लिए अलग-अलग उपनाम जनरेटर निर्दिष्ट करने के लिए AliasGenerator उपयोग कर सकते हैं।
यह विशेष रूप से उपयोगी है यदि आपको डेटा लोड करने और सहेजने के लिए अलग-अलग नामकरण परंपराओं का उपयोग करने की आवश्यकता है, लेकिन आप प्रत्येक फ़ील्ड के लिए अलग-अलग सत्यापन और क्रमांकन उपनाम निर्दिष्ट नहीं करना चाहते हैं।
उदाहरण के लिए:
from pydantic import AliasGenerator, BaseModel, ConfigDict
class Tree(BaseModel):
model_config = ConfigDict(
alias_generator=AliasGenerator(
validation_alias=lambda field_name: field_name.upper(),
serialization_alias=lambda field_name: field_name.title(),
)
)
age: int
height: float
kind: str
t = Tree.model_validate({'AGE': 12, 'HEIGHT': 1.2, 'KIND': 'oak'})
print(t.model_dump(by_alias=True))
#> {'Age': 12, 'Height': 1.2, 'Kind': 'oak'}
उपनाम प्राथमिकता¶
यदि आप Field पर एक alias निर्दिष्ट करते हैं, तो यह डिफ़ॉल्ट रूप से जेनरेट किए गए उपनाम पर प्राथमिकता लेगा:
from pydantic import BaseModel, ConfigDict, Field
def to_camel(string: str) -> str:
return ''.join(word.capitalize() for word in string.split('_'))
class Voice(BaseModel):
model_config = ConfigDict(alias_generator=to_camel)
name: str
language_code: str = Field(alias='lang')
voice = Voice(Name='Filiz', lang='tr-TR')
print(voice.language_code)
#> tr-TR
print(voice.model_dump(by_alias=True))
#> {'Name': 'Filiz', 'lang': 'tr-TR'}
उपनाम प्राथमिकता¶
इस व्यवहार को बदलने के लिए आप किसी फ़ील्ड पर alias_priority सेट कर सकते हैं:
alias_priority=2उपनाम को उपनाम जनरेटर द्वारा ओवरराइड नहीं किया जाएगा।alias_priority=1उपनाम को उपनाम जनरेटर द्वारा ओवरराइड किया जाएगा ।alias_priorityसेट नहीं:- उपनाम सेट है: उपनाम को उपनाम जनरेटर द्वारा ओवरराइड नहीं किया जाएगा।
- उपनाम सेट नहीं है: उपनाम को उपनाम जनरेटर द्वारा ओवरराइड किया जाएगा ।
यही प्राथमिकता validation_alias और serialization_alias पर भी लागू होती है। फ़ील्ड उपनाम के अंतर्गत विभिन्न फ़ील्ड उपनामों के बारे में और देखें।
本文总阅读量次