내 문제 :장고 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 무시하기 때문에 그 일이 생각 사용자가 개체의 소유자가 아닌 없다 -이 메소드의 반환 아무것도 -는 내가 원하는,하지만 내 폼 클래스 대신에 새로운 객체 생성 무엇을 : 나는 형태가 self.instance을받지 않기 때문에 이런 일이 생각
class ClientCreation(forms.ModelForm):
class Meta:
model = Client
fields = ('name', 'loyal')
및 대신 새로운 것을 만드십시오 - 무슨 우 uld 나는이 상황에서합니까? 개체의 소유자가 현재 사용자가 아닌 경우 새로운 게시물을 생성하고 싶지 않습니다. 그런 다음 게시 요청을 보내지 않아도됩니다. 어떻게 올바르게 구현해야합니까?
업데이트 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)
그런 다음 당신은 또한 404을 올릴 수 있을까? –
전체 등급 코드를 제공해 주시겠습니까? –
@MosesKoledoye 어떤 오류라도 발생시키고 싶지 않다. 내 템플릿에 적절한 메시지가있다. 객체를받지 못한다. – Vova