【发布时间】:2016-03-12 20:04:42
【问题描述】:
我的在线营销部门跟踪数千行电子邮件和分析营销数据,我正在构建一个工具,我们可以在内部使用它来管理数据,以便我们可以运行多个查询来生成报告。
CRUD 操作正常工作,但是要输入的数据太多,拥有ticket_form.html、ticket_list.html 和ticket_confirm_delete.html 视图和模板效率低下。我的列表数据是表格格式,所以我想做的是将操作组合在一个视图下,这样我就可以在表格的末尾添加一个带有图标的列来添加、更新和删除行。感谢您的帮助。
我目前的观点,我想结合:
class TrafficForm(ModelForm):
class Meta:
model = Traffic
fields = ['sessions', 'new_users', 'reminder', 'campaigns', 'new_sales', 'sales_renewals']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['sessions'].widget.attrs.update({
'placeholder': 'Sessions',
...
})
for field in iter(self.fields):
self.fields[field].widget.attrs.update({
'class': 'form-control placeholder-no-fix'
})
def traffic_create(request, template_name='traffic_form.html'):
form = TrafficForm(request.POST or None)
if form.is_valid():
form.save()
return redirect('traffic_list')
return render(request, template_name, {'form': form})
def traffic_list(request, template_name='traffic_list.html'):
traffic = Traffic.objects.all()
data = {}
data['object_list'] = traffic
return render(request, template_name, data)
def traffic_update(request, pk, template_name='traffic_form.html'):
traffic = get_object_or_404(Traffic, pk=pk)
form = TrafficForm(request.POST or None, instance=traffic)
if form.is_valid():
form.save()
return redirect('traffic_list')
return render(request, template_name, {'form': form})
def traffic_delete(request, pk, template_name='traffic_confirm_delete.html'):
traffic = get_object_or_404(Traffic, pk=pk)
if request.method == 'POST':
traffic.delete()
return redirect('traffic_list')
return render(request, template_name, {'object': traffic})
【问题讨论】:
-
您可能想使用表单集开始 - 将每一行视为来自一个对象。看看这里的 ModelFormSetView:github.com/AndrewIngram/django-extra-views
标签: django django-models django-forms django-templates django-views