karlosss
karlosss

Reputation: 3155

DRF - Foreign key in a non-model serializer

I have a non-model serializer which looks like this:

class NonModelSerializer(Serializer):
    secret_number = IntegerField()
    user = ???

    def save(**kwargs):
        ... do something with the secret number and user ...

What shall be written instead of ??? so that my serializer accepts ID of a user and in save() method, I see the user of the given ID in the user field? Something like ModelChoiceField from plain Django.

Upvotes: 0

Views: 480

Answers (1)

Ehsan Nouri
Ehsan Nouri

Reputation: 2040

you should use PrimaryKeyRelatedField,:

class NonModelSerializer(serializers.Serializer):

    user = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())
    secret_number = serializers.IntegerField()

    class Meta:
        fields = ('user', 'secret_number')

    def create(self, validated_data):
        print(self.validated_data)
    pass

    def update(self, instance, validated_data):
        pass

I suggest you override create and update instead of save, but you can access the selected user in save by self.validated_data too.

Upvotes: 1

Related Questions