2014-09-03 7 views
5

उपयोगकर्ता एक विशेष प्रश्न की .c अपलोड कर रहा है।Django फ़ाइल अपलोड और नाम बदलें

from django.db import models 

class users(models.Model): 
    username = models.CharField(max_length=20) 
    password = models.CharField(max_length=20) 
    score=models.IntegerField(max_length=3) 
    def __unicode__(self): 
     return self.username 

class questions(models.Model): 
    question = models.TextField(max_length=2000) 
    qid=models.IntegerField(max_length=2) 
    def __unicode__(self): 
     return self.qid 

def content_file_name(instance, filename): 
    return '/'.join(['uploads', instance.questid.qid, filename]) 


class submission(models.Model): 
    user = models.ForeignKey(users) 
    questid = models.ForeignKey(questions) 
    file = models.FileField(upload_to=content_file_name) 

मैं इस कोशिश की: मैं फ़ाइल 'userid_questionid.c'

मेरे models.py है के रूप में नाम दिया जा करना चाहते हैं। लेकिन यह सिर्फ उपयोगकर्ता के फ़ोल्डर बनाता है और इसमें फ़ाइल सहेजता है। कृपया मदद करे। धन्यवाद। मुझे फ़ाइल का नाम बदलने की जरूरत है।

+0

डिलीमीटर हमेशा '/' नहीं होता है। ओएस के आधार पर, '.','> ',': ', और बैकस्लाश का भी उपयोग किया जा सकता है। – sgarza62

उत्तर

7

आपको बस अपना content_file_name फ़ंक्शन बदलने की आवश्यकता है। नीचे दिया गया कार्य इस तरह के पथ बनाएगा: uploads/42_100.c, जहां 42 उपयोगकर्ता की आईडी है, और 100 प्रश्न आईडी है।

import os 
def content_file_name(instance, filename): 
    ext = filename.split('.')[-1] 
    filename = "%s_%s.%s" % (instance.user.id, instance.questid.id, ext) 
    return os.path.join('uploads', filename) 
+0

यह काम किया! इसके अलावा मुझे Views.py और django टेम्पलेट में इसके साथ जुड़े बदलाव करना था। धन्यवाद। –

+0

@JaineshPatel इसे सुनकर खुशी हुई! अगर प्रश्न हल हो गया है तो कृपया उत्तर को सही के रूप में चिह्नित करें – sgarza62

+0

अब मुझे "submidid_userid_questionid.c" प्रारूप में फ़ाइल की आवश्यकता है! मैंने "instance.code.id" का उपयोग करने की कोशिश की लेकिन यह काम नहीं कर रहा है। मैंने "example.id" भी कोशिश की लेकिन यह भी काम नहीं कर रहा है। कृपया इसकी देखभाल करें। –

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