मेरे पास दस्तावेज़ ऑब्जेक्ट्स और लेबल ऑब्जेक्ट्स का एक सेट है, और मैं उन दो ऑब्जेक्ट्स को लिंक करना चाहता हूं। यह एक आम तौर पर कई रिश्ते हैं।मॉडल सहेजते समय कई से अधिक रिश्तों को कब और कैसे बनाया जाता है?
Models.py:
class Document(models.Model):
title = models.CharField(max_length=50, unique=True)
title_slug = models.SlugField(max_length=50, unique=True, editable=False)
labels = models.ManyToManyField('Label')
def save(self, *args, **kwargs):
self.title_slug = slugify(self.title)
super(Document, self).save(*args, **kwargs)
class Label(models.Model):
name = models.CharField(max_length=40, unique=True)
slug = models.SlugField(max_length=40, unique=True, editable=False)
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Document, self).save(*args, **kwargs)
Views.py: मैं निम्नलिखित कोड है
class DocumentForm(ModelForm):
class Meta:
model = Document
fields = ["title","labels"]
def upload_document(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
new_document = form.save()
return HttpResponseRedirect("/thanks/")
else:
form = DocumentForm()
return render_to_response('upload_page.html', {'form':form}, context_instance=RequestContext(request))
जब मैं कोई दस्तावेज़ अपलोड, यह डेटाबेस में जुड़ जाता है, फिर भी कोई लेबल नहीं किया जा रहा है दस्तावेज़ के साथ बनाया या जुड़ा हुआ है। क्या ऐसा करने के लिए मुझे दस्तावेज़ के सेव() फ़ंक्शन में स्पष्ट रूप से कुछ जोड़ने की ज़रूरत है? या कहीं कहीं.py.py फ़ाइल में? मैं कल्पना करता यह की तरह कुछ जाना चाहते हैं: यदि लेबल है कि जोड़ा जा रहा है पहले से मौजूद है
- चेक ऐसा नहीं है, तो एक नया लेबल
- ले लो दोनों वर्तमान document_id बनाने करता है और नए/मौजूदा label_id
- document_labels तालिका (स्वचालित रूप से कई-से-अनेक संबंध के लिए बनाया)
मुझे लगता है कि की तरह महसूस करने के लिए एक रिकॉर्ड जोड़ना बहुत मानक कार्यक्षमता कि मैं कर रहा हूँ करने के लिए का निर्माण किया जाएगा मान लिया है django में किसी भी से अधिक रिश्ते, लेकिन यह अब तक मेरे लिए काम नहीं कर रहा प्रतीत होता है। मैं यहां पहिया को फिर से शुरू करने से बचने की कोशिश कर रहा हूं। Django के लिए कुछ नया।
अग्रिम धन्यवाद!
आप एक फ़ॉर्म का उपयोग करके कर रहे हैं? क्या आप अन्य साधनों से 'दस्तावेज' जोड़ रहे हैं? आप किस बारे में बात कर रहे हैं() विधि? 'दस्तावेज़', 'लेबल' या एक रूप में से एक? ऑब्जेक्ट को सहेजने वाले कुछ नमूना दृश्य/फॉर्म/अन्य कोड प्रदान करें। – andreaspelme
मुझे लगता है कि मुझे सच में यकीन नहीं है कि कौन सी सहेजने की विधि में जाना चाहिए। इसलिए मेरा प्रश्न =] दस्तावेजों को साइट पर किसी फॉर्म के माध्यम से जोड़ा जा रहा है। मैंने विचारों को उस प्रश्न को अद्यतन करने के लिए देखा है जो.py.py –