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對象;你應該通過這個。 –