gpt4 book ai didi

python - 从 django 中的文件添加选择

转载 作者:太空宇宙 更新时间:2023-11-03 21:29:26 25 4
gpt4 key购买 nike

我正在完成我的期末项目,需要你的帮助!

我需要从文件中提取一些数据并将它们添加为 django 表单中的选项。这些是 MIDI 音符。我需要浏览包含音符的文件(我创建的 csv),提取它们并将它们转换为我的表单的选项,所以我只能选择存在的那些,因为每首歌都有不同的音符。有人可以给我一些关于如何做到这一点的想法吗?如果您有任何疑问,或者如果您需要更多信息,请随时询问!

编辑:我正在添加我已经完成的内容。在我的 models.py 中,我创建了 NOTAS_CHOICES,因此我想向其中添加此选项。通过打印,我显示了 NOTAS_CHOICES 给出的内容,它给出了所有值,但它们没有按应有的形式显示在表单中

def Modificacion_Bateria(request, cancion_id):
cancion=Cancion.objects.get(pk=cancion_id)
cancion.NOTAS_CHOICES=(('0','Nota Pad Verde'),('1','Nota Pad Gris'),('2','Nota Pad Azul'),('3', 'Nota Pad Amarillo'),
('4','Nota Pad Rojo'),('35','Acoustic Bass Drum'),('36','Bass Drum 1'),('37','Side Stick'),('38','Acoustic Snare'),('39','Hand Clap'),
('40','Electric Snare'),('41','Low Floor Tom'),('42','Closed Hi Hat'),('43','High Floor Tom'),('44','Pedal Hi-Hat'),
('45','Low Tom'),('46','Open Hi-Hat'),('47','Low-Mid Tom'),('48','Hi-Mid Tom'),('49','Crash Cymbal 1'),('50','High Tom'),
('51','Ride Cymbal 1'),('52','Chinese Cymbal'),('53','Ride Bell'),('54','Tambourine'),('55','Splash Cymbal'),
('56','Cowbell'),('57','Crash Cymbal 2'),('58','Vibraslap'),('59','Ride Cymbal 2'),('60','Hi Bongo'),('61','Low Bongo'),
('62','Mute Hi Conga'),('63','Open Hi Conga'),('64','Low Conga'),('65','High Timbale'),('66','Low Timbale'),('67','High Agogo'),
('68','Low Agogo'),('69','Cabasa'),('70','Maracas'),('71','Short Whistle'),('72','Long Whistle'),('73','Short Guiro'),
('74','Long Guiro'),('75','Claves'),('76','Hi Wood Block'),('77','Low Wood Block'),('78','Mute Cuica'),('79','Open Cuica'),
('80','Mute Triangle'),('81','Open Triangle'))
print cancion.NOTAS_CHOICES
if request.method=="POST":
formulario_modifiacion_bateria=Formulario_Modificacion_Bateria(request.POST,request.FILES,instance=cancion)
if formulario_modifiacion_bateria.is_valid():
formulario_modifiacion_bateria.save()
return redirect('/ListadoCanciones/')
else:
formulario_modifiacion_bateria=Formulario_Modificacion_Bateria(instance=cancion)
context={'formulario_modifiacion_bateria':formulario_modifiacion_bateria, 'cancion':cancion}
return render(request,"configuracion.html",context)

enter image description here

最佳答案

我认为您将选择添加到模型内的硬编码选择的方法是不正确的。我认为你可以这样处理:

首先,将 Note 声明为模型:

class Note(models.Model):
text = models.TextField()

第二,它作为 FK 到 Cancion 模型:

class Cancion(models.Model):
notes = models.ForeignKey(Note)
... # rest of the field

第三,我不确定这个表单的内容是什么Formulario_Modificacion_Bateria(命名类时请使用Pascal大小写),但是当它上传文件时,我是假设它是笔记文件。假设注释文件如下所示:

...
Nota Pad Verde,
Nota Pad Gris,
...

因此我们可以读取这些文件并在 View 中的“注释”中创建条目。像这样:

def Modificacion_Bateria(request, cancion_id):  # Method should be snake case. Please read PEP-8 Style guide
...
if request.method == "POST":
...
data = csv.DictReader(request.FILES['file'])
for row in data:
note, created = Note.objects.get_or_create(text=row[0])

现在,选择将在与 Cancion 相关的 ModelForm 中自动更新。希望对您有所帮助。

关于python - 从 django 中的文件添加选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53618662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com