【发布时间】:2020-04-20 09:03:03
【问题描述】:
我的模型有基于类的视图。我想创建对象的完整副本并去编辑它。我想从 UpdateView 中使用一个特殊的复制按钮来执行此操作,但它是对象列表中的一个不错的选择。我怎样才能做到这一点?下面是其中一种模型的代码。
我的创建视图:
class CreateDealView(
CustomSuccessMessageDeal,
CustomPermissionRequired,
CreateView
):
model = Deal
template_name = 'db_visual/create_deal.html'
form_class = DealForm
permission_required = (
'db_visual.add_deal',
)
success_message = "Сделка %(pk)s успешно создана!"
def get_success_url(self):
url_kwargs = {'deal_id': self.object.id}
url_name = 'update_deal'
return reverse_lazy(url_name, kwargs=url_kwargs)
我的更新视图:
class UpdateDealView(
CustomSuccessMessageDeal,
CustomPermissionRequired,
UpdateView
):
model = Deal
pk_url_kwarg = 'deal_id'
template_name = 'db_visual/update_deal.html'
form_class = DealForm
success_message = "Сделка <a href='%(url)s'>%(id)s</a> " \
"успешно изменена!"
def get_success_url(self):
url_name = 'deals'
return reverse_lazy(url_name)
def get_success_message(self, cleaned_data):
return self.success_message % dict(
cleaned_data,
id=self.object.id,
url=reverse_lazy(
'update_deal',
kwargs={
'deal_id': self.object.id,
}
),
)
UPD:我为通过 id 创建副本编写了一个视图,但是当我尝试重定向到 UpdateView 时出现错误:
我的看法:
def copy_deal(request, deal_id):
new_deal = Deal.objects.get(pk=deal_id)
new_deal.pk = None
new_deal.save()
return reverse_lazy(
'update_deal',
kwargs={'deal_id': new_deal.pk}
)
我的反向有什么问题?
【问题讨论】:
标签: django django-views