Я пытаюсь использовать Django UpdateView для отображения формы обновления для пользователя. https://docs.djangoproject.com/en/1.8/ref/class-based-views/generic-editing/Django Class Based View UpdateView Ограниченный пользователь
Я только хочу, чтобы пользователь мог редактировать свою собственную форму.
Как я могу фильтровать или ограничивать объекты в модели только отображать объекты, принадлежащие аутентифицированному пользователю?
Когда пользователь имеет только один объект, я могу использовать это:
def get_object(self, queryset=None):
return self.request.user.profile.researcher
Однако мне теперь нужно, чтобы пользователь имел возможность редактировать несколько объектов.
ОБНОВЛЕНИЕ:
класс ExperimentList (ListView):
model = Experiment
template_name = 'part_finder/experiment_list.html'
def get_queryset(self):
self.researcher = get_object_or_404(Researcher, id=self.args[0])
return Experiment.objects.filter(researcher=self.researcher)
класс ExperimentUpdate (UpdateView):
model = Experiment
template_name = 'part_finder/experiment_update.html'
success_url='/part_finder/'
fields = ['name','short_description','long_description','duration', 'city','address', 'url']
def get_queryset(self):
qs = super(ExperimentUpdate, self).get_queryset()
return qs.filter(researcher=self.request.user.profile.researcher)
URL:
url(r'^experiment/update/(?P<pk>[\w\-]+)/$', login_required(ExperimentUpdate.as_view()), name='update_experiment'),
Спасибо. Я успешно смог создать представление списка и получить представление обновления для работы, передав PK. Однако при попытке переопределить getView для UpdateView я все еще сталкиваюсь с проблемами. См. Обновленный код выше. – user3913192
Большое спасибо! – user3913192