Django и нуб-программист здесь. Я сделал приложение, которое хотел бы развернуть, но мне нужно выяснить, как ограничить доступ к UpdateView создателю этого объекта, и я в тупике.
В настоящее время пользователь может использовать CreateView .../universities/create/ для создания объекта университета, но затем любой пользователь может использовать .../universities/update/ для редактирования этого объекта. Я хочу настроить это так, чтобы только пользователь, который является создателем (любой пользователь с атрибутом ManytoMany «администратор») этого университета, имел доступ к UpdateView для своего университетского объекта.
Любой совет будет принят во внимание. Я потратил на это несколько дней и не добился большого успеха... спасибо, что прочитали.
models.py
class University(models.Model):
name = models.CharField(max_length=100)
about = models.TextField()
administrators = models.ManyToManyField(User)
profile_picture = models.FileField(upload_to=get_upload_file_name, blank=True)
def __unicode__(self):
return unicode(self.name)
def get_absolute_url(self):
return reverse('university_detail', kwargs={'pk': str(self.id)})
views.py
class UniversityCreateView(CreateView):
model = University
form_class = UniversityForm
template_name = 'university_create.html'
def form_valid(self, form):
f = form.save(commit=False)
f.save()
return super(UniversityCreateView, self).form_valid(form)
class UniversityUpdateView(UpdateView):
model = University
form_class = UniversityForm
template_name='university_form.html'
get_queryset
вUpdateView
возвращает набор запросов, который будет использоваться для получения объекта, который будет отображаться в этом представлении. Поэтому, если вы ограничиваете пользователя набора запросов, объекты, созданные другими пользователями, не должны отображаться. - person Paulo Almeida   schedule 28.08.2013