无法从 Django 中的 CSV 文件上传将数据插入模型



在我点击提交后,我想什么都没有发生,因为它无法从.models导入Mobile,所以从.model导入Mobile的从forms.py未使用。如何导入它,以便我可以成功上传CSV文件,并将数据插入移动模型。

表单.py看起来像这个

import io
import csv
from django import forms
from .models import Mobile

class DataForm(forms.Form):
data_file = forms.FileField()
def clean_data_file(self):
f = self.cleaned_data['data_file']
if f:
ext = f.name.split('.')[-1]
if ext != 'csv':
raise forms.ValidationError('File Type not supported')
return f
def process_data(self):
f = io.TextIOWrapper(self.cleaned_data['data_file'].file)
Mobile = csv.DictReader(f)
for i in Mobile:
Mobile.objects.create_data(i['mobile_owner'], i['mobile_number'])

views.py看起来像这样:

from .models import Mobile
from django.views.generic import TemplateView
from .forms import DataForm
from django.views.generic import FormView

class DataView(FormView):
template_name = 'sms/mobile.html'
form_class = DataForm
success_url = '/upload/'
def form_valid(self, form):
form.process.data()
return super().form_valid(form)

mobile.html看起来像这个

{% extends 'base/base.html' %}
{% block title %}Add SMS Data{% endblock title %}

{% block scripts %}
{% endblock scripts %}

{% block content %}
<form action="{% url 'mobile' %}" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<label>Upload mobile numbers</label>
<input type="file" name="data_file">
<input type="submit" value="submit">
</form>

{% endblock content %}

urls.py看起来像这样:

from django.urls import path, include
from . import views
urlpatterns = [
path('mobile', views.index, name='mobile'),
]

嗨,您的form_valid方法中似乎有拼写错误。

from .models import Mobile
from django.views.generic import TemplateView
from .forms import DataForm
from django.views.generic import FormView

class DataView(FormView):
template_name = 'sms/mobile.html'
form_class = DataForm
success_url = '/upload/'
def form_valid(self, form):
form.process_data()
return super().form_valid(form)

form.process.data()更改为form.process_data(),您应该可以离开了。

最新更新