2012-11-10 23 views
13

यदि निम्न सही तरीका छवियों के लिए टैगिंग प्रणाली बनाने के लिए है मैं सोच रहा हूँ और एक टैग बादल रेंडर करने के लिए सक्षम किया जा रहा:Django टैग मॉडल के डिजाइन

from django.db import models 

class Tag(models.Model): 
    word  = models.CharField(max_length=35) 
    slug  = models.CharField(max_length=250) 
    created_at = models.DateTimeField(auto_now_add=False) 

    def __unicode__(self): 
     return self.word 

class Photo(models.Model): 
    slug    = models.CharField(max_length=250) 
    filename   = models.CharField(max_length=200) 
    extension   = models.CharField(max_length=4) 
    size    = models.IntegerField() 
    ... 
    tags    = models.ManyToManyField(Tag) 

    def __unicode__(self): 
     return self.slug 

ध्यान दें कि मेरी डेटाबेस तालिका पंक्तियों के लाखों लोगों में शामिल होंगे और प्रत्येक छवि में 4-8 टैग होंगे।

कृपया सलाह दें।

+0

मैं जानता हूँ कि यह काफी देर पहले किया गया था, लेकिन आप, होगा

इसके अलावा, पहिया पुनर्रचना से बचने के लिए, अगर किसी और को एक पुस्तकालय है कि अपने उद्देश्यों को पूरा करती बनाया गया है को देखने के दिमाग बताते हुए कि आप टैग में एक स्लग फ़ील्ड क्यों डालते हैं? मेरा मतलब है, उद्देश्य क्या है। वास्तव में उत्सुक। मौजूदा django संकुल को इंगित करने के लिए – Nifled

उत्तर

18

यदि आप ऐसा करना चाहते हैं तो उस डेटा मॉडल के मुकाबले एक टैग क्लाउड बनाना चाहिए।

tags = models.ManyToManyField(Tag,related_name='photos') 

है कि आप तस्वीर विचारों क्लीनर पढ़ सकते हैं और याद रखना अधिक आसान करने के लिए रिवर्स लुकअप कर देगा: मैं एक संशोधन करना होगा।

हालांकि, मैं आपके टैग के लिए अन्य उपयोग मामलों पर विचार करता हूं। क्या टैग क्लाउड एकमात्र चीज है जिसे आप टैगिंग का उपयोग करना चाहते हैं? क्या कोई मेटा डेटा है जिसमें संबंध होना चाहिए?

यदि आप लाखों पंक्तियों पर होने की योजना बना रहे हैं, तो कैशिंग डेटा मॉडल के रूप में उतनी ही महत्वपूर्ण होगी। http://www.djangopackages.com/grids/g/tagging/

संपादित:: वर्तनी

+0

+1। –

+0

हाँ मुझे यह पसंद है: http://django-taggit.readthedocs.io/en/stable/getting_started.html – Tsangares

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