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'
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
@marckr' 'bad 'cleaned_data' özniteliğidir, bir anahtar değil. Güncelleme cevap –
Çok teşekkürler! Mükemmel çalışıyor! – marckr