उपनाम
उपनाम किसी फ़ील्ड के लिए एक वैकल्पिक नाम है, जिसका उपयोग डेटा को क्रमबद्ध और डीसेरिएलाइज़ करते समय किया जाता है।
आप निम्नलिखित तरीकों से उपनाम निर्दिष्ट कर सकते हैं:
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
पर भी लागू होती है। फ़ील्ड उपनाम के अंतर्गत विभिन्न फ़ील्ड उपनामों के बारे में और देखें।
本文总阅读量次