2014-12-04 5 views
6

मैं Django 1.7 पर चल रहा हूँ और जब मैं अजगर manage.py विस्थापित चलाने मैं निम्न त्रुटिDjango NameError: नाम 'bPath' परिभाषित नहीं है

 File "/home/ymorin007/workspace/sites/jantiyes.com/src/deeds/migrations/0006_auto_20141204_1631.py", line 9, in <module> 
    class Migration(migrations.Migration): 
    File "/home/ymorin007/workspace/sites/jantiyes.com/src/deeds/migrations/0006_auto_20141204_1631.py", line 19, in Migration 
    field=models.ImageField(storage=django.core.files.storage.FileSystemStorage(location=bPath('/home/ymorin007/workspace/sites/jantiyes.com/src/media')), max_length=255, null=True, upload_to=deeds.models.picture_name, blank=True), 
NameError: name 'bPath' is not defined 

यह मेरा कर्म/models.py

है मिल
from jantiyes.settings.base import MEDIA_ROOT 

upload_storage = FileSystemStorage(location=MEDIA_ROOT) 

def picture_name(self, filename): 

    ext = filename.split('.')[-1] 
    deedname = re.sub('[ ]', '-', self.text.lower()) 
    filename = "DEED-%s-%s.%s" % (self.id, deedname, ext) 

    url = "%s" % filename 

    return url 


class Deed(TimeStampedModel): 

    picture = models.ImageField(upload_to=picture_name, null=True, blank=True, storage=upload_storage, max_length=255) 
    text = models.CharField(max_length=500) 
    when = models.DateField(unique=True) 

मेरे मीडिया घोषणा:

BASE_DIR = Path(__file__).ancestor(3) 
MEDIA_ROOT = BASE_DIR.child("media") 
+0

कौन सी लाइब्रेरी 'पथ' से है? मुझे यह 'pathlib' जैसा दिखता नहीं है क्योंकि इसमें' पूर्वज 'विधि नहीं है। –

+0

मैं Django के लिए नया हूं इसलिए वास्तव में यह सुनिश्चित नहीं है कि आप मुझे – Yannick

+0

की जांच करना चाहते हैं, रिकॉर्ड के लिए मैं जानना चाहता हूं कि आपका आयात किस पथ से 'पथ' से है। –

उत्तर

7

जरूरत है यह jantiyes.settings.base.MEDIA_ROOT की सटीक परिभाषा के बिना बताना मुश्किल है, लेकिन मुझे लगता है कि यह एक वर्ग (bPath) का एक उदाहरण है यह सोचते हैं रहा हूँ यह अपनी सेटिंग्स फ़ाइल में परिभाषित है, कि deconstructible नहीं है और वह subclass of unicode है। इसलिए माइग्रेशन लेखक मानते हैं कि इसे किसी भी आयात की आवश्यकता नहीं है और repr वह मान है जो bPath('/home/ymorin007/workspace/sites/jantiyes.com/src/media') हो जाता है।

  1. यकीन jantiyes.settings.base.MEDIA_ROOT स्ट्रिंग के रूप में परिभाषित किया गया है और इस तरह सही ढंग से पलायन लेखक द्वारा नियंत्रित करें:

    आपके पास दो विकल्प। जैसे MEDIA_ROOT = '/home/ymorin007/workspace/sites/jantiyes.com/src/media' आपके jantiyes.settings.base मॉड्यूल फ़ाइल में।

  2. सुनिश्चित करें कि bPath कक्षा deconstructibledeconstruct विधि को आयात पथ को वापस करने के तरीके को परिभाषित करके सुनिश्चित करें।
+0

मेरा मीडिया घोषणा पथ। BASE_DIR = पथ (__ फ़ाइल __)। पूर्वजों (3) MEDIA_ROOT = BASE_DIR.child ("मीडिया") – Yannick

+0

फिर, 'पथ' वर्ग की उत्पत्ति के बारे में ब्योरे के बिना बताना मुश्किल है लेकिन मुझे लगता है कि' MEDIA_ROOT = str (BASE_DIR.child ("मीडिया")) 'क्या करना चाहिए? –

+0

str (BASE_DIR.child ("media")) सब कुछ ठीक करें ... त्रुटि से ब्रावो – Yannick

1

कहाँ MEDIA_ROOT परिभाषित किया गया है? मैं इस स्थिति में आप की संभावना

from django.conf import settings 

upload_storage = FileSystemStorage(location=settings.MEDIA_ROOT) 
+0

हां मेरे पास jantiyes.settings.base आयात है MEDIA_ROOT – Yannick

+0

मेरा अनुमान है कि यह 'upload_storage' को '__init__' फ़ंक्शन के बाहर परिभाषित नहीं किया गया है। '__init__' फ़ंक्शन के अंदर कोड केवल तत्कालता पर बुलाया जाता है, लेकिन जब भी आप 'माइग्रेट' या 'रनरवर' चलाते हैं तो इसके बाहर कोड को कॉल किया जाता है। – Jared

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