gpt4 book ai didi

django - 扩展 Django Admin 以进行数据导入

转载 作者:行者123 更新时间:2023-12-05 00:01:20 25 4
gpt4 key购买 nike

我正在尝试在 Django 管理界面中为特定模型构建一个导入功能/表单。

我已经在 Stackoverflow 上找到了以下问题,但是由于我是 django 的新手,所以我无法将其全部连接起来。 Import csv data into database in Django Admin

我想我了解如何使用 Django 对象以及如何使用 CSV 阅读器模块,但我花了很多时间将它们放在 Django 中。

到目前为止我尝试的是:

模型.py

class RfidTag(models.Model):
"""
Available RFID-Tags from Importfile
"""

system = models.DecimalField(
_('system'),
max_digits=4,
decimal_places=0,
)

tagId = models.DecimalField(
_('tag ID'),
max_digits=4,
decimal_places=0,
)

serial = models.CharField(
_('serial'),
max_length=10,
)


# forms.py #
class RfidImport(forms.ModelForm):
file_to_import = forms.FileField()

class Meta:
model = RfidTag
fields = ("file_to_import",)

def save(self, commit=False, *args, **kwargs):
form_input = RfidImport()
file_csv = self.cleaned_data['file_to_import']
csv.register_dialect('excel-new', delimiter=';', quoting=csv.QUOTE_NONE)
records = csv.reader(file_csv, dialect='excel-new')
for line in records:
self.system = line[0]
self.tagId = line[1]
self.serial = line[2]
form_input.save()
datafile.close()

管理员.py

class RfidTagAdmin(admin.ModelAdmin):
list_display = ('system','tagId','serial')
actions = ['import_tags']

def get_urls(self):
urls = super(RfidTagAdmin, self).get_urls()
my_urls = patterns('',
(r'^import/$', self.admin_site.admin_view(import_tags))
)
return my_urls + urls

def import_tags(self, request, queryset):
return HttpResponseRedirect("./import")

import_tags.short_description = "Import new RFID tags"
pass

admin.site.register(RfidTag, RfidTagAdmin)

View .py

@staff_member_required
def import_tags(request):
if request.method == "POST":
form = RfidImport(request.POST, request.FILES)
if form.is_valid():
form.save()
success = True
context = {"form": form, "success": success}
return HttpResponseRedirect("../")
else:
form = RfidImport()
context = {"form": form}
return HttpResponseRedirect("../")

我的问题是,管理操作实际上是正确的方法吗?有没有更好的方法来实现我正在尝试的目标?我该如何连接它?在我选择导入操作并单击“开始”后,我还没有看到表格。

最佳答案

管理员是正确的方法,但是我不会为此使用操作,它们旨在对对象列表起作用,而您不需要它。对于这种情况,只需扩展 admin/index.html 模板并向您的 View 添加一个 href。之后,您创建一个正常的表格,您可以在其中进行处理

关于django - 扩展 Django Admin 以进行数据导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7583177/

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