В моем приложении DRF, когда я регистрирую нового пользователя, автоматически создается «проект» для этого пользователя. Мне нужно, чтобы идентификатор этого недавно созданного "проекта" был включен в данные ответа, и я не могу понять, как это сделать. Я возвращаю пользователя в ответе, но без значений для проекта.
Модель проекта:
class Project(models.Model):
projectCode = models.CharField(max_length=10, null=True)
projectName = models.CharField(
max_length=100)
user = models.ForeignKey(
User, related_name="projects", on_delete=models.CASCADE, null=True)
editor = models.ForeignKey(
User, on_delete=models.CASCADE, null=True)
creationDate = models.DateTimeField(auto_now_add=True)
completedDate = models.DateTimeField(null=True, blank=True)
dueDate = models.DateTimeField(null=True, blank=True)
@receiver(post_save, sender=User)
def create_project(sender, instance, created, **kwargs):
if created:
Project.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_project(sender, instance, **kwargs):
instance.projects.first().save()
Сериализатор регистра:
class RegisterSerializer(serializers.ModelSerializer):
projects = serializers.PrimaryKeyRelatedField(read_only=True, many=True)
class Meta:
model = User
fields = ('id', 'username', 'email', 'password',
'groups', 'projects')
extra_kwargs = {'password': {'write_only': True}}
def create(self, validated_data):
groups_data = validated_data.pop('groups')
user = User.objects.create_user(**validated_data)
for group_data in groups_data:
user.groups.add(group_data)
return user
И API регистрации Просмотр:
class RegisterAPI(generics.GenericAPIView):
serializer_class = RegisterSerializer
def post(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
user = serializer.save()
return Response({
"user": UserSerializer(user, context=self.get_serializer_context()).data,
})
Это ответ, который я получаю при регистрации пользователя.
user:
{
id: 73,
username: "testuserregistered",
email: "email@email.com",
groups: [{…}]
}
как включить внешний ключ проекта в этот ответ?