2016-03-25 17 views
0

Bir dosyayı metin değeriyle birlikte tanım ve yükleme olarak başaramam. Nedenini anlamıyorum: Biçim ve model açık bir şekilde ilgili alanlara sahiptir. Referansı görüntü alanından tekst kaldırdığımda, dosyayı doğru şekilde yükler ve kaydeder. Bilginize: Benim modelimde def get_upload_to modelinin ve Overig_Beeld.objects.create görüntülemenin neden sadece upload.save() yerine bir alt dizin yapısı temelini kullanıyorum.Dosyaya bir metin açıklaması ile yükleme

Modeli:

def get_upload_to(instance, filename): 
    return 'bulkafbeeldingen/%s/%s' % (instance.bulknummer, filename) 
class Overig_Beeld(models.Model): 
    file = models.FileField(upload_to=get_upload_to) 
    bestandnaam = models.CharField(max_length=256, null=True) 
    upload_date = models.DateTimeField(auto_now_add=True) 
    bulknummer = models.ForeignKey(Bulk, null=True) 
    tekst = models.CharField(max_length=512) 

Form:

class Overig_BeeldForm(forms.ModelForm): 
    file = forms.FileField() 
    tekst = forms.CharField(required=False) 
    class Meta: 
     model = Overig_Beeld 
     fields = ('file', 'tekst') 

şablonu:

<form action="" method="post" enctype="multipart/form-data"> 
    {% csrf_token %} 
     <label for="file">Bestand:</label> 
     <input type="file" name="file"/> 
     <input type="text" name="tekst"/> 
     <input type="submit" value="Upload" /> 
</form> 

Görünüm:

if request.method=="POST": 
    upload = Overig_BeeldForm(request.POST, request.FILES) 
    if upload.is_valid(): 
     f = request.FILES['file'] 
     Overig_Beeld.objects.create(file=f, bestandnaam=f.name, bulknummer=bulk, tekst=upload.tekst) 
    return redirect(reverse('bulk', args=(bulk.slug,))) 

hatası:

'Overig_BeeldForm' object has no attribute 'tekst' 

cevap

1

Yüklenen veriler django formun örneği cleaned_data özelliğinde içerir. Yani

text = upload.cleaned_data['tekst'] 

Ben cleaned_data aşina değilim, senin sorunun

+0

Teşekkür Andrey çözecektir ve önerisi şu anda bana bir hata atar gibi ben içine bakmak gerekir: 'İstisna Değerini: u" Key 'cleaned_data '' Overig_BeeldForm '' içinde bulunamadı ''' – marckr

+0

@marckr' 'bad 'cleaned_data' özniteliğidir, bir anahtar değil. Güncelleme cevap –

+0

Çok teşekkürler! Mükemmel çalışıyor! – marckr

İlgili konular