gpt4 book ai didi

Django-Admin:集成自定义表单

转载 作者:行者123 更新时间:2023-12-01 10:51:07 24 4
gpt4 key购买 nike

我正在尝试将 CSV 文件的导入表单构建到给定模型的管理界面中。可以从模型的 change_list 访问该 View ,但它会引发模板语法错误。

我究竟做错了什么?我是否必须创建自己的模板,还是可以以某种方式重新使用现有的 admin/change_form.html 而我就是不明白?

追溯

第 60 行突出显示。

Template error:
In template site-packages\django\contrib\admin\templates\admin\change_form.html,
error at line 60
Caught KeyError while rendering: 'opts'
50 : {% endfor %}
51 :
52 : {% block after_field_sets %}{% endblock %}
53 :
54 : {% for inline_admin_formset in inline_admin_formsets %}
55 : {% include inline_admin_formset.opts.template %}
56 : {% endfor %}
57 :
58 : {% block after_related_objects %}{% endblock %}
59 :
60 : {% submit_row %}
61 :
62 : {% if adminform and add %}
63 : <script type="text/javascript">document.getElementById("{{ adminform.first_field.id_for_label }}").focus();</script>
64 : {% endif %}
65 :
66 : {# JavaScript for prepopulated fields #}
67 : {% prepopulated_fields_js %}
68 :
69 : </div>
70 : </form></div>

View .py
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 render_to_response("admin/change_form.html", context,
RequestContext(request))

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

admin.py
class RfidTagAdmin(admin.ModelAdmin):
list_display = ('tagId','serial', 'system', 'user')

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

pass

admin.site.register(RfidTag, RfidTagAdmin)

最佳答案

您肯定需要使用您自己的模板,或者修改更改表单但也修改更改 View 。例如,将此导入添加到更改表单本身应该是微不足道的。

Django 的管理员为其管理员使用了很多神奇的东西,这些模板有许多特定于通过其更改/更改 ListView 传入的对象的标签。

扩展 admin/base_site.html相反,你很高兴去。

关于Django-Admin:集成自定义表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7889139/

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