2016-04-13 29 views
1

Modelimde bir DjangoFileField var. Sesin türünü o FielField'dan mp3'e çevirmeye çalışıyorum ve tekrar kaydetmeye çalışıyorum. Ama türünü dönüştürme ve pydub kullanarak dışa aktardıktan sonra aşağıdaki hata veriyorAttributeError: 'file' nesnesinin '_committed' özelliği yoktur

AttributeError: 'file' object has no attribute '_committed' 

i audio o yazdırır yazdırırken Kodum bu

def get_from_function(AudioSegment, format): 

    form = "from_{0}".format(format) 
    print form 
    if hasattr(AudioSegment, form): 
     return getattr(AudioSegment, form) 
    return None 


    audio = request.FILES.get('audio', None) 
    if audio: 
     name_list = audio.name.rsplit(".") 
     voice_format =name_list[1] 
     from_format = get_from_function(AudioSegment, voice_format) 
     if from_format and callable(from_format): 
      sound = from_format(audio) 
      audio = sound.export("media/{0}".format(name_list[0]), mp3") 

gibidir

<open file 'media/barsandtone', mode 'wb+' at 0x7f771e5e2f60> 

ve Dosya türünü yazdırdığımda,

i

Mymodel.objects.create(audio=audio) 

gibi modelini django ses alanını atadığınızda

ama hatayı

AttributeError at /create/ 
'file' object has no attribute '_committed' 

Django modeli

cevap

1

django ihtiyaçları içine aktarılan dosyayı kaydetmek için doğru yolu nedir verir Genellikle bir veri akışı geçirerek bunu yapmak için bir ContentFile ve genellikle bir argümanı bir modele aktarma şekliniz çalışmıyor. Bunu yapmanın uygun yolu, aşağıdaki içeriği ContentFile geçirmeyi unutmayın. Django, ContentFile(audio)'u iletirseniz herhangi bir hata vermeyecektir, ancak bu durumda dosya içeriğini kaydetmezsiniz.

İlgili konular