मैं एक वेब डेटाबेस के लिए Django 1.11 और MySQL का उपयोग कर रहा हूँ। मेरे पास कार विज्ञापन पोस्ट के लिए टेबल है। इस तालिका में कई कॉलम हैं जैसे शीर्षक, मूल्य, पोस्ट किए गए विज्ञापनों का समय, और इसी तरह, कार सुविधाओं जैसे प्रकार, स्थिति, सिलेंडर, ईंधन के लिए कई कॉलम हैं। उनमें से प्रत्येक कॉलम में कई विकल्प हैं। उदाहरण के लिए, स्थिति के लिए (उत्कृष्ट, बहुत अच्छा, अच्छा, गरीब) के विकल्प हैं। ईंधन गैस, डीजल के लिए। सिलेंडर के लिए विकल्प 3,4,5,6,8,12 हैं। और इसी तरह। इसे लागू करने के लिए मेरे पास दो विकल्प हैं।

1- पहला विकल्प कारों के लिए टेबल बनाना है जिसमें कॉलम होते हैं जिनमें शीर्षक जैसे विकल्प नहीं होते हैं। फिर इस तालिका को अन्य तालिकाओं (प्रकार, मॉडल, ईंधन, सिलेंडर, आदि के लिए तालिका) से कनेक्ट करें। फिर कई से एक संबंध में प्रत्येक तालिका को मुख्य कार तालिका से कनेक्ट करें।
2- दूसरा विकल्प यह है कि Django मॉडल के अंदर टुपल्स बनाने के लिए ये विकल्प हैं और प्रत्येक कॉलम को अलग-अलग टेबल बनाने के बजाय मुख्य टेबल के अंदर फ़ील्ड बनाएं और फिर उन्हें विदेशी कुंजी के माध्यम से कनेक्ट करें।

मेरा प्रश्न यह है कि निम्नलिखित में से कौन सा विकल्प अधिक प्रभावी है:

1- प्रदर्शन और गति

2- फॉर्म बनाने में आसान, और लिखने और डेटाबेस में सेव करने के लिए डेटा फॉर्म से आता है।

0
Saleh 1 मई 2018, 05:45

1 उत्तर

सबसे बढ़िया उत्तर

1- पहला विकल्प कारों के लिए टेबल बनाना है जिसमें कॉलम होते हैं जिनमें शीर्षक जैसे विकल्प नहीं होते हैं। फिर इस तालिका को अन्य तालिकाओं (प्रकार, मॉडल, ईंधन, सिलेंडर, आदि के लिए तालिका) से कनेक्ट करें। फिर प्रत्येक तालिका को कई से एक संबंध में मुख्य कारों की तालिका से कनेक्ट करें।

मुझे लगता है कि आप चाहते हैं कि आपके मॉडल इस तरह हों:

class CarCondition(models.Model):
    condition_id = .. # the primary key, preferably an AutoField
    condition_name = models.CharField(unique=True)

और फिर आप CarCondition को इस तरह से पॉप्युलेट करेंगे:

condition_id | condition_name
1            | 'Excellent'
2            | 'Very good'

आदि और फिर कार में:

class Car(models.Model):
    title = models.CharField()
    ...
    condition = models.ForeignKey('CarCondition', on_delete=...)
    ...

मॉडलफॉर्म:

class CarAdForm(forms.ModelForm):
    class Meta:
        model = Car

और बस इतना ही, क्योंकि सभी विदेशी कुंजियों को Django द्वारा ModelChoiceFields में बदल दिया जाता है।

आप डेटा को इस तरह से सहेज सकते हैं:

CarAdForm(req.POST).save()

आपके विचार में।

2- दूसरा विकल्प यह है कि Django मॉडल के अंदर टुपल्स बनाने के लिए ये विकल्प हैं और प्रत्येक कॉलम को अलग-अलग टेबल बनाने के बजाय मुख्य टेबल के अंदर फ़ील्ड बनाएं और फिर उन्हें विदेशी कुंजी के माध्यम से कनेक्ट करें।

चूंकि car_condition जैसे कॉलम में विकल्पों का एक गुच्छा होगा, और एक चारफिल्ड होगा, आपको मॉडलफॉर्म के बारे में कुछ चीजें बदलनी होंगी, ताकि इसे एक चुनिंदा विजेट के रूप में प्रस्तुत किया जा सके। एक उदाहरण के रूप में देखें यह उत्तर। आप ModelForm के बारे में जो कुछ भी बदलते हैं, उसके आधार पर आपको CarAdForm(req.POST).save() से अधिक की आवश्यकता हो भी सकती है और नहीं भी।

पहले दृष्टिकोण से फ़ॉर्म बनाना और सहेजना आसान लगता है। हालांकि, मेरी राय में, फॉरेनकी रेफरेंशियल अखंडता के बारे में अधिक है, जबकि आप केवल कुछ विकल्पों के लिए उपयोगकर्ता इनपुट को सीमित करने की कोशिश कर रहे हैं, जो कि विकल्प टुपल द्वारा बेहतर किया जाता है।

1
user7485741 1 मई 2018, 09:34