1
我目前正在研究一个允许用户为关键字设置同义词的Django应用程序。 它使用下面的模型:Django:从视图更新对象,没有模型或模板
class UserSynonym(models.Model):
user = models.ForeignKey(Tenant)
key = models.CharField(max_length=255)
value = models.CharField(max_length=255)
一个ListView为用户提供的概述,并且每个条目后面是“编辑”按钮链接到相关 EditView中,允许用户改变“值”参数。
我现在想要添加一个按钮,允许用户快速将对象重置为其原始含义(将'value'设置为'key'的值) 我希望这是一个按钮,没有任何表单或html模板。只需按下列表上的按钮,即可“重置”模型的值。
我认为我必须为此任务编辑一个EditView,但是,这些视图保持不变,我为它们提供了一个表单或一个HTML模板/页面 这不是我想要做的。
有没有办法改变EditView,使它改变对象的值,而不用将用户重定向到表单或新的网页?
编辑: 为了完整起见,我为我目前使用它
class SynonymUpdate(UserRootedMixin, UpdateView):
model = UserSynonym
form_class = SynonymCreateForm
def get_form_kwargs(self):
kwargs = super(SynonymUpdate, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
def form_valid(self, form):
form.instance.linked_user = self.kwargs.get('user')
return super(SynonymUpdate, self).form_valid(form)
def get_success_url(self, **kwargs):
return reverse('synonym_list', args=[self.request.user.id])
这里绝对没有要查询用户的要点。 'currentuser'与* request.user'完全相同的db对象;你应该通过这个。 –