Django updateview a _set from a model
У меня есть детальное представление
from django.shortcuts import get_object_or_404
class Dashboard (AdminStaffRequiredMixin, LoginRequiredMixin, ListView):
model = User
template_name = 'SCHUK/Dashboard.html'
context_object_name = 'Dashboard'
def ansicht(request, pk):
user = get_object_or_404(User, pk=pk)
return render(request, 'SCHUK/Ansicht.html', context={'user': user})
class Ansicht(AdminStaffRequiredMixin, LoginRequiredMixin, DetailView):
model = User
template_name = 'SCHUK/Ansicht.html'
context_object_name = 'Ansicht'
пока все хорошо. Моя гениальная идея состоит в том, чтобы просматривать данные пользователя по его имени пользователя. все мои модели привязаны к модели пользователя
class SchulverzeichnisTabelle(models.Model):
Benutzer = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
Konto = models.IntegerField(blank=True, null=True)
S_Form = models.CharField(max_length=20, blank=True, null=True)
Schulname = models.CharField(max_length=150, blank=True, null=True)
etc
но теперь у меня возникли проблемы с CRUD данных пользователя как пользователя персонала. Это работает, но это перенаправляет персонал не в правильное представление
class SVAVerwaltung(LoginRequiredMixin, UpdateView):
model = SchulverzeichnisTabelle
fields = ['Konto', 'S_Form',
'Schulname', 'SAB',
'GL', 'Zuege',
'Teilstandort', 'IH',
'SSt_OGS', 'OGS_Grp',
'VK', 'Z_SW',
'Z_besG', 'U_Ausf',
'U_Org', 'Schulleitung_Vorname',
'Schulleitung_Nachname',
'Lehrer_FK', 'GL_Lehrer_FK']
template_name = 'SCHUK/SVAVerwaltung.html'
context_object_name = 'SVAVerwaltung'
def get_absolute_url(self):
return reverse('Ansicht', args=[str(self.id)])
Моя цель - иметь две группы пользователей, обычные и персонал. обычные просматривают свои собственные данные и могут только редактировать их, а персонал может просматривать данные пользователей и CRUD, а не только редактировать.
Можно ли как-то заставить url детального просмотра меняться местами с updateview. Было бы также хорошо, если бы он просто перенаправлял на предыдущий url или даже javascript timed event или обычный реверс с небольшой магией kwargs или что-то еще
Я могу сделать обратный переход к статическому url, но это не так удобно для пользователя.
Также если у вас есть другие идеи, как реализовать мое представление пользователя и представление сотрудника, я также буду рад их прочитать.
Я даже попробовал весь подход через htmx, и это перенаправляет на правильный url, но показывает пустую страницу, я думаю, потому что перенаправляет на staff pk, а не detailview pk.
Вообще, возможно ли обновить набор из чего-то. например, в шаблоне я могу отобразить _set, но можно ли как-то обновить _set, ведь это решило бы все проблемы
Святой Иисус, я кое-что нашел
def get_success_url(self):
pk = self.object.Benutzer.pk
return (reverse('Ansicht', kwargs={'pk': pk}))
просто установите pk от пользователя fk из таблицы Schulverzeichnis. Это решило проблему для меня
Перенаправление на ту же страницу после метода POST с использованием представлений на основе классов