Как избавиться от TypeError в /task_create/, quote_from_bytes() ожидаемые байты
Я на django 4.0.4 и имею доброкачественную, но раздражающую проблему с вышеуказанным кодом ошибки.
Предыдущие ответы на подобные вопросы мне не помогают.
Когда я делаю backspace, (неудобство, о котором пользователь может и не думать) все на самом деле прошло хорошо, список и детальные представления правильно обновляются.
Форма создания остается такой же, как и была, как будто она не была сохранена, и вид не меняется на детальный вид, как предлагает get_absolute_url, что может привести к повторной обработке.
Код из предыдущих моделей точно такой же, где это имеет значение. Примером может служить представление TaskCreate, которое вызывает проблему, и представление ObjectiveCreate непосредственно перед ним, которое работает как ожидалось.
В представлениях я нахожу пользователя и его/ее сущность (даже если есть одна сущность), и обрабатываю этого пользователя как супервизора1, а также автоматически обрабатываю сущность.
Ошибка находит ошибку в "return super().form_valid(form)" представления TaskCreate, но не в том, что в представлении ObjectiveCreate.
Вот код для двух представлений `class ObjectiveCreate(LoginRequiredMixin, CreateView):
model = Objective
form_class = ObjectiveCreateForm
template_name = "internalcontrol/objective_create_form.html"
def form_valid(self, form):
user = self.request.user
profile = Profile.objects.get(user=user)
entity = profile.entity
new_profile = Profile.objects.get(user=user, entity=entity)
form.instance.supervisor1 = new_profile
form.instance.entity = entity
return super().form_valid(form)
def get_form_kwargs(self):
kwargs = super(ObjectiveCreate, self).get_form_kwargs()
kwargs["request"] = self.request
return kwargs
class TaskCreate(LoginRequiredMixin, CreateView):
model = Task
form_class = TaskCreateForm
template_name = "internalcontrol/task_create_form.html"
def form_valid(self, form):
user = self.request.user
profile = Profile.objects.get(user=user)
entity = profile.entity
new_profile = Profile.objects.get(user=user, entity=entity)
form.instance.supervisor1 = new_profile
form.instance.entity = entity
return super().form_valid(form)
def get_form_kwargs(self):
kwargs = super(TaskCreate, self).get_form_kwargs()
kwargs["request"] = self.request
return kwargs
Соответствующие get_absolute_url для обеих моделей следующие:
def get_absolute_url(self):
return reverse(
"internalcontrol:objective_detail",
kwargs={"pk": self.pk},
)
и
def get_absolute_url(self):
return (
reverse("internalcontrol:task_detail", kwargs={"pk": self.pk}),
)
Думаю, проблема в конечном адресе, на который должен быть перенаправлен пользователь.
Чтобы решить эту проблему, сначала отредактируйте функцию get_absolute_url, чтобы она возвращала string, а не tuple.
Если все еще не работает, попробуйте добавить success_url к представлению с помощью reverse_lazy