मैं Django में एक मॉडल के लिए custom primary keys का उपयोग कर रहा हूं। (यह था, क्योंकि मैं डेटाबेस में मूल्यों का आयात किया गया था और वे पहले से ही पहचान पत्र संलग्न किया था, और यह मौजूदा मूल्यों को बचाने के लिये भावना बनाया है।)Django: कस्टम पीके ऑटो-वृद्धि करना?
class Transaction(models.Model):
id = models.IntegerField(primary_key=True)
transaction_type = models.IntegerField(choices=TRANSACTION_TYPES)
date_added = models.DateTimeField(auto_now_add=True)
हालांकि, अब मैं करने के लिए मॉडल का नया उदाहरणों जोड़ना चाहते हैं डेटाबेस, और मैं एक अद्वितीय प्राथमिक कुंजी को स्वत: उत्पन्न करना चाहता हूं।
t = Transaction(transaction_type=0)
t.save()
देता है::
IntegrityError at /page
(1048, "Column 'id' cannot be null")
मैं कैसे एक अद्वितीय ID autogenerate नए मूल्यों के लिए निर्दिष्ट करने के लिए कर सकते हैं लेकिन अगर मैं उदाहरण बनाकर के समय आईडी का उल्लेख नहीं है, मैं कोई त्रुटि मिलती है , मौजूदा मूल्यों को आयात करने के तरीके को बदलने के बिना?
अद्यतन
मैं जो काम करने के लिए लगता है इस कस्टम विधि, लिखा है ...
class Transaction(models.Model):
def save(self, *args, **kwargs):
if not self.id:
i = Transaction.objects.all().order_by('-id')[0]
self.id = i.id+1
super(Transaction, self).save(*args, **kwargs)
मुझे उत्सुकता है - यदि आप थोक आयात कर रहे हैं तो django प्राथमिक कुंजी को संभालने की समस्या क्या थी? मेरे पास ऐसी स्थिति कभी नहीं थी जहां प्राथमिक कुंजी समस्या थी - जब तक कि आप एक उत्पादन/चल रहे सिस्टम पर आयात नहीं कर रहे हों। –