Как создать несколько объектов вместе с внешним ключом, для которого предусмотрено поле foreignkey?

class User(models.Model):
   email = models.EmailField()


class Lawyer(models.Model):

   user = models.OnetoOneField(User)

class Session(models.Model):

  lawyer = models.ForeignKey(Lawyer)

  name = models.TextField()


class SessionSerializer(serializers.ModelSerializer):

  email = serializers.EmailField()
  class Meta:
      model = Session
      fields=['name', 'lawyer','email']

У меня в запросе нет идентификатора адвоката, в моем запросе указан только адрес электронной почты и название сессии.

Мне нужно создать несколько объектов с помощью сериализатора сеанса, но как спасти юриста с помощью отправленного электронного письма?

🤔 А знаете ли вы, что...
В Python есть инструменты для тестирования кода, такие как библиотека unittest.


1
44
1

Ответ:

Решено

все, что вам нужно, это создать Lawyer, также вы должны установить для параметра allow null значение true для поля laweyer.

class SessionSerializer(serializers.ModelSerializer):

  email = serializers.SerializerMethodField()
  lawyer = serializers.IntegerField(allow_null=True, required=False)

  fields=['name', 'lawyer','email']

  def create(self, validated_data):
     user = User.objects.create(email=validated_data.get('email'))
     lawyer = Lawyer.objects.create(user=user)
     name = validated_data.get('name')
     instance = Session.objects.create(lawyer=lawyer, name=name)
     return instance