Django редактировать владелец Object
<Я пробовал с чем-то вроде этого, что, конечно же, не работает
def ChangeField(request, title_id):
user_title = Field.objects.filter(id=title_id,
user=request.user)
if user_title:
user_title.user = 'Admin'
user_title.save()
else:
return redirect('https://example.com')
return HttpResponseRedirect('/another')
Когда пользователь объекта ID 11, например, вызывает URL /11, я хочу изменить владельца объекта 11 на суперпользователя, в моем случае суперпользователь называется 'Admin'
Файл моделей
class Field(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
default=None,
null=True,
on_delete=models.CASCADE,
)
....
Попытка user_title.user = request.user
Вы можете использовать get вместо filter и установить superuser как
from django.core.exceptions import ObjectDoesNotExist
from django.contrib.auth.models import User
def ChangeField(request, title_id):
try:
user_title = Field.objects.get(id=title_id,
user=request.user)
superuser = User.objects.get(is_superuser=True) # I assumed here one superuser you can get which superuser with your own condition here
user_title.user = superuser
user_title.save()
return HttpResponseRedirect('/another') # return response after successful
except ObjectDoesNotExist:
return redirect('https://example.com') # return response if object does not exists