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

我试图通过在管理员内部调整modelform来将csv文件导入数据库:

models.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)

Forms.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()

Admin.py:

class DataAdmin(admin.ModelAdmin):

list_display = ("place", "time")

form = DataImport

admin.site.register(Data, DataAdmin)

但是我一直试图导入我在“ file_to_import”字段中放入的文件。在Forms.py中获取AttributeError:’function’对象没有属性’FILES’。

回答:

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

形成:

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()

风景:

@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))

以上是 在Django Admin中将csv数据导入数据库 的全部内容, 来源链接: utcz.com/qa/432604.html

回到顶部