पर शुरू करने के लिए कैसे प्राप्त करें हमारे Django ऐप के लिए, हम AutoField
प्राप्त करना चाहते हैं, जो कि 1 से दूसरे नंबर पर शुरू होता है। ऐसा करने का एक स्पष्ट तरीका प्रतीत नहीं होता है। कोई विचार?Django ऑटोफ़िल्ड्स को उच्च संख्या
उत्तर
दूसरों की तरह कहा है, यह Django पक्ष की तुलना में डेटाबेस पक्ष पर करना अधिक आसान होगा।
पोस्टग्रेज़ के लिए, यह like so: ALTER SEQUENCE sequence_name RESTART WITH 12345;
अपने स्वयं के डीबी इंजन के दस्तावेज़ों को देखें कि आप इसे कैसे करेंगे।
source पर एक त्वरित झलक दिखाता है कि इसके लिए कोई विकल्प नहीं लगता है, शायद इसलिए कि यह हमेशा एक से बढ़ता नहीं है; यह अगली उपलब्ध कुंजी चुनता है: "एक इंटीजरफ़िल्ल्ड जो उपलब्ध आईडी के अनुसार स्वचालित रूप से बढ़ता है" - djangoproject.com
ऑटो फ़ील्ड डेटाबेस ड्राइवर पर उपयोग किए जाने पर, कुछ हद तक निर्भर करता है।
आपको यह देखने के लिए वास्तव में विशिष्ट डेटाबेस के लिए बनाई गई वस्तुओं को देखना होगा।
MySQL के लिए मैं एक संकेत है कि syncdb के बाद यह करता बनाया:
from django.db.models.signals import post_syncdb
from project.app import models as app_models
def auto_increment_start(sender, **kwargs):
from django.db import connection, transaction
cursor = connection.cursor()
cursor = cursor.execute("""
ALTER table app_table AUTO_INCREMENT=2000
""")
transaction.commit_unless_managed()
post_syncdb.connect(auto_increment_start, sender=app_models)
एक syncdb बदलने तालिका बयान निष्पादित किया जाता है के बाद। यह आपको mysql में लॉगिन करने और मैन्युअल रूप से जारी करने से छूट देगा।
संपादित करें: मुझे पता है कि यह एक पुराना धागा है, लेकिन मैंने सोचा कि यह किसी की मदद कर सकता है।
यहाँ मैं क्या किया है ..
def update_auto_increment(value=5000, app_label="remrate_data"):
"""Update our increments"""
from django.db import connection, transaction, router
models = [m for m in get_models() if m._meta.app_label == app_label]
cursor = connection.cursor()
for model in models:
_router = settings.DATABASES[router.db_for_write(model)]['NAME']
alter_str = "ALTER table {}.{} AUTO_INCREMENT={}".format(
_router, model._meta.db_table, value)
cursor.execute(alter_str)
transaction.commit_unless_managed()
मैं इसी तरह कुछ करने के लिए की जरूरत है। मैं जटिल सामान बचा और केवल दो क्षेत्रों बनाया:
my_highvalue_id = id_no + 1200
मैं:
id_no = models.AutoField(unique=True)
my_highvalue_id = models.IntegerField(null=True)
views.py में, मैं तो बस id_no को एक निश्चित संख्या जोड़ा सुनिश्चित नहीं है कि यह आपकी समस्या को हल करने में मदद करता है, लेकिन मुझे लगता है कि आप इसे आसानी से ढूंढ सकते हैं।
- 1. मैं एक उच्च संख्या में आईएफ स्टेटमेंट
- 2. अगले उच्च/निचले आईईईई डबल परिशुद्धता संख्या
- 3. MySQL अस्थायी डिस्क टेबल्स की उच्च संख्या
- 4. टेम्पलेट में django टुकड़ा संख्या
- 5. उच्च स्तरीय भाषाओं को कितना उच्च/जाना चाहिए?
- 6. Django: अज्ञात urls.py पैरामीटर की मनमानी संख्या
- 7. उच्च प्रदर्शन
- 8. उच्च उपलब्धता
- 9. उच्च-थ्रूपुट
- 10. टाइपस्क्रिप्ट - उच्च ऑर्डर फ़ंक्शन प्रकार
- 11. जीएमएल spacer.gif युक्त टीडी को 16px उच्च
- 12. उच्च थ्रूपुट जावा ऐप्स को गर्म करना
- 13. ग्रिड पैदल में उच्च स्कोर
- 14. Django
- 15. टीसीपी कनेक्ट उच्च लोड
- 16. django
- 17. उच्च लेबल श्रेणी लेबल ओवरलैपिंग
- 18. यादृच्छिक कार्य: उच्च मान कम
- 19. उच्च आधा कर्नेल प्रारंभ
- 20. उच्च रिज़ॉल्यूशन अंतराल/टाइमर
- 21. उच्च समय परिशुद्धता
- 22. उच्च प्रकार के प्रकार
- 23. उच्च प्रोफ़ाइल MonoTouch ऐप्स?
- 24. टोमकैट उच्च CPU
- 25. नैनोस्लीप उच्च सीपीयू उपयोग?
- 26. उच्च निष्पादन JMS संदेश
- 27. उच्च स्तर नेट
- 28. देखें - उच्च अल्फा
- 29. उच्च kinded जेनरिक
- 30. Django - टेम्पलेट के लूप के लिए iterate संख्या
माइग्रेशन में ऐसा करने के लिए http://stackoverflow.com/q/25318279/59439 देखें –