に私の問題を新しいオブジェクトを作成します。ジャンゴUpdateView
def get_object(self, queryset=None):
try:
object_get = self.model.objects.get(pk=self.kwargs['pk'])
except ObjectDoesNotExist:
raise Http404("No object found matching this query")
if self.request.user.is_authenticated():
if object_get.owner == self.request.user:
return object_get
それで現在の場合: UpdateViewではなく、以前の更新の新しいオブジェクトを作成し、私は私のビューのクラス定義で私はこのような方法をGET_OBJECTオーバーライドするので、その問題が発生したと思いますユーザーがオブジェクトの所有者ではありません - このメソッドの戻り値は何も - その私が欲しかったものが、私のフォームクラスは、代わりに新しいオブジェクトを作成しない:
class ClientCreation(forms.ModelForm):
class Meta:
model = Client
fields = ('name', 'loyal')
を私はフォームがself.instanceを受信していないので、これが起こっていると思うし、代わりに新しいものを作りなさいuld私はこのような状況ですか?オブジェクトの所有者が現在のユーザーではない場合、新しい投稿を作成する必要はありません。そのような投稿リクエストを送信しても問題ありません。これを正しく実装するにはどうすればいいですか?
UPDATEのviews.py:UpdateView
で
class Distinct(generic.UpdateView):
def get_object(self, queryset=None):
try:
object_get = self.model.objects.get(pk=self.kwargs['pk'])
except ObjectDoesNotExist:
raise Http404("No object found matching this query")
if self.request.user.is_authenticated():
if object_get.owner == self.request.user:
return object_get
def get_form_kwargs(self):
kwargs = super(Distinct, self).get_form_kwargs()
if self.request.user.is_authenticated():
kwargs.update({'user': self.request.user})
return kwargs
def post(self, request, *args, **kwargs):
if request.POST.get('action', '') == 'Delete':
object_get = self.get_object()
request.session['deleted_data'] = str(object_get)
object_get.delete()
return redirect(reverse('crm:main'))
else:
return super(Distinct, self).post(request, *args, **kwargs)
def get_success_url(self):
return reverse('crm:{}'.format(self.distinct_template), kwargs={'pk': self.kwargs['pk']})
class DistinctClient(Distinct):
form_class = ClientCreation
model = Client
template_name = 'crm/client_detail.html'
all_template = 'clients'
distinct_template = 'client'
def get_form_kwargs(self):
return generic.UpdateView.get_form_kwargs(self)
onwerは、現在のユーザーではないか、いないときに、あなたも404を上げることができますか? –
フルクラスコードをご提供できますか? –
@MosesKoledoyeエラーを発生させたくないテンプレートに適切なメッセージがあり、オブジェクトが届かない – Vova