У меня есть представление в Django, которое отвечает за запись пользователя на тренировку с личным тренером. Этому представлению нужен полный объект Trainer, но форма реагирования передает Django только идентификатор тренера, несмотря на то, что атрибут PrimaryKeyRelatedField установлен в сериализаторе.
Это ошибка, которую я получил:
Это ошибка:
Это ошибка:
р>
Error: Cannot assign "'2'": "TrainingSession.trainer" must be a "Trainer" instance.
@api_view(["POST"])
@permission_classes([IsAuthenticated])
def create_training_session(request):
data = request.data
# Check require information
if "trainer" not in data or "date" not in data or "duration" not in data:
return Response(
{"detail": "Brak wymaganych pól."}, status=status.HTTP_400_BAD_REQUEST
)
try:
session = TrainingSession.objects.create(
trainer=data["trainer"],
client=request.user,
date=data["date"],
duration=data["duration"],
)
serializer = TrainingSessionSerializer(session, many=False)
return Response(serializer.data, status=status.HTTP_201_CREATED)
except Exception as e:
return Response({"detail": str(e)}, status=status.HTTP_400_BAD_REQUEST)
class TrainingSessionSerializer(serializers.ModelSerializer):
trainer = serializers.PrimaryKeyRelatedField(queryset=Trainer.objects.all())
client = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())
class Meta:
model = TrainingSession
fields = ["id", "trainer", "client", "date", "duration", "status"]
import React, { useState, useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import {Button, Form, FloatingLabel} from "react-bootstrap";
import { bookTrainingSession, listTrainers } from '../actions/serviceActions';
const BookTrainingSessionForm = () => {
const [trainer, setTrainer] = useState('');
const [date, setDate] = useState('');
const [duration] = useState(60);
const dispatch = useDispatch();
const trainerList = useSelector((state) => state.trainerList);
const { loading: loadingTrainers, error: errorTrainers, trainers } = trainerList;
const sessionTrainingBook = useSelector((state) => state.sessionTrainingBook);
const { loading, error, success } = sessionTrainingBook;
useEffect(() => {
dispatch(listTrainers());
}, [dispatch]);
const submitHandler = (e) => {
e.preventDefault();
dispatch(bookTrainingSession({ trainer, date, duration }));
};
return (
Trener
{loadingTrainers ? (
Loading trainers...
) : errorTrainers ? (
Error: {errorTrainers}
) : (
setTrainer(e.target.value)} required>
Wybierz trenera
{trainers.map((trainer) => (
{trainer.name}
))}
)}
Data
setDate(e.target.value)} required />
{loading ? 'Booking...' : 'Book Session'}
{error && Error: {error}}
{success && Session booked successfully!}
);
};
export default BookTrainingSessionForm;
Подробнее здесь: https://stackoverflow.com/questions/789 ... -in-django
Проблема с формой React и передачей информации на бэкэнд в Django ⇐ Python
Программы на Python
-
Anonymous
1737017891
Anonymous
У меня есть представление в Django, которое отвечает за запись пользователя на тренировку с личным тренером. Этому представлению нужен полный объект Trainer, но форма реагирования передает Django только идентификатор тренера, несмотря на то, что атрибут PrimaryKeyRelatedField установлен в сериализаторе.
Это ошибка, которую я получил:
Это ошибка:
Это ошибка:
р>
Error: Cannot assign "'2'": "TrainingSession.trainer" must be a "Trainer" instance.
@api_view(["POST"])
@permission_classes([IsAuthenticated])
def create_training_session(request):
data = request.data
# Check require information
if "trainer" not in data or "date" not in data or "duration" not in data:
return Response(
{"detail": "Brak wymaganych pól."}, status=status.HTTP_400_BAD_REQUEST
)
try:
session = TrainingSession.objects.create(
trainer=data["trainer"],
client=request.user,
date=data["date"],
duration=data["duration"],
)
serializer = TrainingSessionSerializer(session, many=False)
return Response(serializer.data, status=status.HTTP_201_CREATED)
except Exception as e:
return Response({"detail": str(e)}, status=status.HTTP_400_BAD_REQUEST)
class TrainingSessionSerializer(serializers.ModelSerializer):
trainer = serializers.PrimaryKeyRelatedField(queryset=Trainer.objects.all())
client = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())
class Meta:
model = TrainingSession
fields = ["id", "trainer", "client", "date", "duration", "status"]
import React, { useState, useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import {Button, Form, FloatingLabel} from "react-bootstrap";
import { bookTrainingSession, listTrainers } from '../actions/serviceActions';
const BookTrainingSessionForm = () => {
const [trainer, setTrainer] = useState('');
const [date, setDate] = useState('');
const [duration] = useState(60);
const dispatch = useDispatch();
const trainerList = useSelector((state) => state.trainerList);
const { loading: loadingTrainers, error: errorTrainers, trainers } = trainerList;
const sessionTrainingBook = useSelector((state) => state.sessionTrainingBook);
const { loading, error, success } = sessionTrainingBook;
useEffect(() => {
dispatch(listTrainers());
}, [dispatch]);
const submitHandler = (e) => {
e.preventDefault();
dispatch(bookTrainingSession({ trainer, date, duration }));
};
return (
Trener
{loadingTrainers ? (
Loading trainers...
) : errorTrainers ? (
Error: {errorTrainers}
) : (
setTrainer(e.target.value)} required>
Wybierz trenera
{trainers.map((trainer) => (
{trainer.name}
))}
)}
Data
setDate(e.target.value)} required />
{loading ? 'Booking...' : 'Book Session'}
{error && Error: {error}}
{success && Session booked successfully!}
);
};
export default BookTrainingSessionForm;
Подробнее здесь: [url]https://stackoverflow.com/questions/78935248/problem-with-react-form-and-passing-information-to-backend-in-django[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия