2012-11-16 33 views
24

के प्राथमिक क्षेत्र का नाम प्राप्त करें Django में, प्रत्येक मॉडल में एक छद्म विशेषता pk है, जो प्राथमिक कुंजी के रूप में घोषित क्षेत्र को इंगित करता है।Django मॉडल

class TestModel(models.Model): 
    payload = models.Charfield(max_length=200) 

इस मॉडल में, pk विशेषता निहित id क्षेत्र को इंगित होता है, कि उत्पन्न होता है अगर कोई क्षेत्र प्राथमिक घोषित किया गया है।

class CustomPK(models.Model) 
    primary = models.CharField(max_length=100, primary=True) 
    payload = models.Charfield(max_length=200) 

इस मॉडल में, pk विशेषता स्पष्ट परिभाषित प्राथमिक कुंजी क्षेत्र को इंगित होता primary

तो मेरे सवाल है, मैं फ़ील्ड का नाम कैसे प्राप्त कर सकते हैं, कि प्राथमिक कुंजी है?

+2

आपको इसकी आवश्यकता क्यों है? प्रत्येक परिस्थिति में 'पीके' का उपयोग किया जा सकता है। –

+1

हमें स्क्रिप्ट के माध्यम से किसी डेटाबेस को माइग्रेट करने के लिए इसकी आवश्यकता है। – Martin

उत्तर

29

तुम भी PK-विशेषता पर एक विशेषता "नाम" होगा। ऐसा लगता है कि फ़ील्ड का नाम है।

CustomPK._meta.pk.name 

मेरे मामले में मुझे परिणाम के रूप में मूल्य "आईडी" मिलता है (जैसा होना चाहिए)। :-)

+3

pk.name कॉलम नाम वापस नहीं करता है, यह "_id" पोस्टफिक्स को छोड़ देता है। (django 1.7 पर परीक्षण किया गया) मैंने कस्टमपीके._meta.pk.column का उपयोग किया है – Oleg

1

Field वस्तुओं एक primary_key विशेषता

for field in CustomPK._meta.fields: 
    print field.primary_key 
    print field.name 


# True 
# primary 
# False 
# payload