gpt4 book ai didi

django - 在 Django Admin 中将 csv 数据导入数据库

转载 作者:行者123 更新时间:2023-11-28 19:37:42 25 4
gpt4 key购买 nike

我尝试通过调整管理员内部的模型形式将 csv 文件导入数据库:

模型.py:

class Data(models.Model):
place = models.ForeignKey(Places)
time = models.DateTimeField()
data_1 = models.DecimalField(max_digits=3, decimal_places=1)
data_2 = models.DecimalField(max_digits=3, decimal_places=1)
data_3 = models.DecimalField(max_digits=4, decimal_places=1)

表格.py:

import csv
class DataImport(ModelForm):
file_to_import = forms.FileField()

class Meta:
model = Data
fields = ("file_to_import", "place")

def save(self, commit=False, *args, **kwargs):
form_input = DataImport()
self.place = self.cleaned_data['place']
file_csv = request.FILES['file_to_import']
datafile = open(file_csv, 'rb')
records = csv.reader(datafile)
for line in records:
self.time = line[1]
self.data_1 = line[2]
self.data_2 = line[3]
self.data_3 = line[4]
form_input.save()
datafile.close()

管理员.py:

class DataAdmin(admin.ModelAdmin):
list_display = ("place", "time")
form = DataImport

admin.site.register(Data, DataAdmin)

但我无法导入我放在“file_to_import”字段中的文件。在 forms.py 中获取 AttributeError:“函数”对象没有属性“FILES”。

我做错了什么?

最佳答案

经过长时间的搜索,我找到了答案:使用标准表单在管理员内部创建 View

表格:

class DataInput(forms.Form):
file = forms.FileField()
place = forms.ModelChoiceField(queryset=Place.objects.all())

def save(self):
records = csv.reader(self.cleaned_data["file"])
for line in records:
input_data = Data()
input_data.place = self.cleaned_data["place"]
input_data.time = datetime.strptime(line[1], "%m/%d/%y %H:%M:%S")
input_data.data_1 = line[2]
input_data.data_2 = line[3]
input_data.data_3 = line[4]
input_data.save()

View :

@staff_member_required
def import(request):
if request.method == "POST":
form = DataInput(request.POST, request.FILES)
if form.is_valid():
form.save()
success = True
context = {"form": form, "success": success}
return render_to_response("imported.html", context,
context_instance=RequestContext(request))
else:
form = DataInput()
context = {"form": form}
return render_to_response("imported.html", context,
context_instance=RequestContext(request))

剩下的是这篇文章的一部分: http://web.archive.org/web/20100605043304/http://www.beardygeek.com/2010/03/adding-views-to-the-django-admin/

关于django - 在 Django Admin 中将 csv 数据导入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3974620/

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