2009-09-30 13 views
50

Django फिक्स्चर के बारे में मुझे जो चीजें हैं, उनमें से एक यह है कि आपको प्रत्येक मॉडल की प्राथमिक कुंजी निर्दिष्ट करना होगा। क्या प्रत्येक पंक्ति के लिए प्राथमिक कुंजी निर्दिष्ट किए बिना फिक्स्चर बनाने का कोई तरीका है? http://farmdev.com/projects/fixture/Django: प्राथमिक कुंजी निर्दिष्ट किए बिना फिक्स्चर बनाएं?

+0

आप manage.py --dumpdata उपयोग कर रहे हैं या उनके द्वारा हाथ? –

+0

लेखन हाथ से उन्हें लिख रहा है। –

उत्तर

75

उपयोग "pk: अशक्त" के बदले "pk: 1"

+18

उपयोग करते समय आपको सावधान रहना होगा पीके-कम स्थिरता। लोडडाटा को याद करते समय, यह मौजूदा लोगों को ओवरराइड करने की बजाय नई प्रविष्टियों को जोड़ने का प्रयास करेगा। – Danosaure

+1

spookylukey या @Danosaure manage.py dumpdata का उपयोग कर "pk: null" फिक्स्चर उत्पन्न करने का कोई तरीका है? मैं दो डीबी को समान स्कीमा के साथ समेकित कर रहा हूं और यह काम कर रहा हूं कि डंपडाटा/लोडडाटा –

+1

@ बेन रॉबर्ट्स के साथ यह कैसे करें pk: null यह समस्या है कि आप डुप्लिकेट के साथ समाप्त हो सकते हैं। मैं आम तौर पर इस तरह की चीजें करने के लिए फ़ाइल डंपडाटा और वीआई फ़ाइल करता हूं। – Danosaure

0

मेरा एक दोस्त fixture मॉड्यूल सुझाव कोई नहीं पर सेट किया जा रहा (या जो भी) है, जो पी में परिणाम होगा, और जब ऑब्जेक्ट सहेजा जाता है एक प्राथमिक कुंजी असाइन की जाएगी।

यह कम से कम वाईएएमएल के लिए काम करता है, मुझे लगता है कि आप इसका उपयोग कर रहे हैं यदि आप हाथ से बना रहे हैं।

+0

कि एक निष्पक्ष ढेर की तरह लगता है बॉयलरप्लेट कोड के साथ काम करने के लिए। परीक्षण के लिए डेटा उत्पन्न करने के लिए मेरा वर्कफ़्लो अक्सर डेटा बनाने के लिए व्यवस्थापक इंटरफ़ेस का उपयोग करना होता है, फिर फ़ाइल को डंप करने के लिए django-test-utils 'makefixture का उपयोग करें, और फिर (यदि आवश्यक हो) किसी को भी हटा दें पीके प्रविष्टियां –

13

आप प्राकृतिक कुंजी पर एक नजर है चाहिए अगर आप का उपयोग किए बिना संबंध जोड़ने के लिए wiling रहे पी के

https://docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-app-label-app-label-app-label-model

+7

दुर्भाग्यवश, प्राकृतिक कुंजी पर दस्तावेज़ ऊपर उपयोग किए गए पीके = नल चाल का उल्लेख करने में विफल रहता है। आपको पीके = नल और प्राकृतिक कुंजी दोनों को पूरी तरह से पीके-कम स्थिरता की आवश्यकता होती है। – Cerin

+0

दुर्भाग्यवश यह लिंक अब काम नहीं करता है। यहां एक है जो आज काम करता है, चलो देखते हैं यदि यह 3 से अधिक वर्षों तक रहता है: https://docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-app-label-app-label-app-label-model –

0

मैं संभावना के बिना मौजूदा डीबी स्कीमा इसे बदलने के लिए का सामना करना पड़ा, तो मैं एक की जरूरत है जटिल प्राथमिक कुंजी के साथ तालिका या इसके बिना - लेकिन धारावाहिक के साथ नहीं। मैं क्या किया:

मैं एक primary_key = क्षेत्र के लिए सच है, जो अद्वितीय बिल्कुल और अतिभारित लिखा विधि नहीं होना चाहिए निर्दिष्ट किया है:

class ContraIndicationsMedicines(models.Model): 

    contra_indication = models.ForeignKey(ContraIndication, primary_key=True) 
    medicine = models.ForeignKey(Medicine) 

    def validate_unique(self, exclude=None): 
     pass 

वास्तव में, यह मेरी जरूरतों के लिए काम किया है, लेकिन django.contib.admin के अंदर अधिक मान्यताओं को कॉल करें। * और सभी इनलाइन आदि काम करने की गारंटी नहीं देते हैं। यही एकमात्र समाधान था जिसे मैं कार्यान्वित कर सकता था ... (

0

यदि आप manage.py dumpdata कमांड को देखते हैं, तो आपको कुछ विकल्प दिखाई देंगे - प्राकृतिक-विदेशी, - प्राकृतिक-प्राथमिक। यदि आप देखते हैं उत्पादन में आप देख सकते हैं कि वस्तुओं प्राथमिक कुंजी या विदेशी कुंजी का उपयोग कर के बिना फेंक दिया जाता है।

संबंधित मुद्दे