#django #django-models
#django #django-модели
Вопрос:
Я использую request.POST
содержимое для сохранения объекта модели после создания и аутентификации пользователя.
проблема в том, что мой пользователь создан и авторизован, но модель, которая расширяет эту самую информацию о пользователях "school_info model"
в базе данных, не сохраняется, пока ошибка не указана. вот мой код:
@api_view(['POST'])
@permission_classes((permissions.AllowAny, ))
def login_api(request):
post = request.POST
user = authenticate(
request,
username=request.POST['username'],
password=request.POST['password']
)
if user:
school = school_info.objects.create(
school_user=request.user,
school_name=post['school_name'],
school_manager_name=post['school_manager_name'],
school_manager_phone=post['school_manager_phone'],
class_count=post['class_count'],
students_per_class=post['students_per_class'],
daytime_importance=post['daytime_importance'],
)
school = school.save()
login(request, user)
return Response({}, status=200)
else:
return Response({}, status=401)
модель school_info
class school_info(models.Model):
school_user = models.OneToOneField(User, on_delete=models.CASCADE)
school_name = models.CharField(max_length=20)
school_manager_name = models.CharField(max_length=20)
school_manager_phone = models.CharField(max_length=11)
class_count = models.IntegerField()
students_per_class = models.IntegerField()
daytime_importance = models.BooleanField(default=False)
Я тоже пробовал ModelForms
и obj.create().save()
, но оба они не работают.
приветствуется любой ответ.
Комментарии:
1. Вы имеете в виду, что объект school вообще не сохраняется или у него нет сохраненных атрибутов. При том, как вы это делаете, он просто создает множество локальных переменных, вы не привязываете его к созданной модели.
2. «модель, которая расширяет эту самую информацию о пользователях в базе данных, не сохраняется» — на какую модель вы ссылаетесь —
school_info
или на какую-то другую? Если последнее, то какая это модель? Также следующая строка не имеет смысла:school = school.save()
—save()
метод ничего не возвращает.3. запрос имеет правильные заголовки, и импорт правильный, и я зарегистрировал модель в admin. объекты могут быть созданы оболочкой или интерфейсом администратора, но не только с помощью этого кода. Я тоже пробовал сериализацию, но не сработало..
4. Проблема не имеет ничего общего с проблемой, но
objects.create
на самом деле вызывает.save()
, поэтому вам не нужно вызывать его вручную, как вы делали5. Я только хотел попробовать все, что думаю. хотя я знал это