将结果csv文件分配给Django模型

时间:2018-08-09 11:32:38

标签: python html django csv midi

我正在开发一个包含不同歌曲的网站。这些歌曲包含不同的属性,其中之一是我通过django的fileField字段上传的midi文件。当我使用表格添加具有这些属性的歌曲时,我会调用一个脚本,该脚本生成带有midi属性信息的csv文件。

问题是我想将此生成的csv文件直接分配给另一个Filefield,即,当我创建表单时,刚提交表单后,此csv就分配给了fileField。

我想知道是否有人可以帮助我。如果您需要任何代码或其他东西,请告诉我。

这是位于forms.py的代码。通过这种形式,我添加了具有以下属性的新歌曲。

class FormCancion(forms.ModelForm):
class Meta:
    model = Cancion
    fields= ['titulo','creacion','midi','dificultad','nota_pad_verde','nota_pad_gris','nota_pad_azul','nota_pad_amarillo','nota_pad_rojo']

views.py代码。此视图用于调用将添加新歌曲的表单。

def crearCancion(request):

cancion=Cancion()
if request.method=="POST":
    formulario=FormCancion(request.POST,request.FILES,instance=cancion)
    if formulario.is_valid():
        formulario.save()
        subprocess.call(['python', '/home/josema/MEGA/Universidad/Universidad/PROYECTO/MIDIPIRCUSSION/MIDIPIRCUSSION_APP/static/MIDIPIRCUSSION_APP/parser.py', '/home/josema/MEGA/Universidad/Universidad/PROYECTO/MIDIPIRCUSSION/media/'+str(cancion.midi)])
        return redirect('/ListadoCanciones/')
else:
    formulario=FormCancion()
    context={'formulario':formulario}
    return render(request,"nuevaCancion.html",context)

我的models.py代码。我需要添加的唯一模型字段是csv文件。提交表单后,我想自动添加它。

class Cancion(models.Model):

    titulo=models.CharField(max_length=60)
    creacion=models.DateField(default=timezone.now)

    avanzado="Avanzado"
    intermedio="Intermedio"
    principiante="Principiante"
    dificultades=((avanzado, 'Avanzado'), (intermedio, 'Intermedio'), (principiante, 'Principiante'))
    dificultad=models.CharField(max_length=15, choices=dificultades)

    @property
    def filename(self):
        return self.midi.path
    midi = models.FileField()

    @property
    def filename(self):
        return self.csv.path
    csv = models.FileField()

1 个答案:

答案 0 :(得分:2)

假设您有一个这样的模型,

class SampleModel(models.Model):

    doc = models.FileField(upload_to='media/', null=True, blank=True)


然后执行类似的操作以将文件添加到模型中,

from django.core.files import File

myfile = open("sample.csv", 'r')
sample = SampleModel.objects.create(doc=File(myfile))


更新

from django.core.files import File

myfile = open("sample.csv", 'r')
sample = Cancion.objects.create(csv=File(myfile))