0

I'm new to Django I want to get profile image from another model topic

models.py

class UserProfile(models.Model):
    user  = models.OneToOneField(User)
    file  = models.ImageField(upload_to='profile_image', blank=True)
    def __unicode__(self):
        return u'%s' % self.user

class Topics(models.Model):
    user  = models.ForeignKey(User)
    title = models.charField(max_length = 55)

serializers.py

User = get_user_model()

class pic(serializers.ModelSerializer):
    class Meta:
        model = UserProfile
        fields = ['file']

class UserInfo(serializers.ModelSerializer):
    username = pic(read_only=True)
    class Meta:
        model = User
        fields = ['username','first_name',]

class TopicSerializer(serializers.ModelSerializer):
    user= UserInfo(read_only=True)
    class Meta:
        model=Topics
        fields = ('user','title',)

I'm getting like this:

"user": {
    "username": {},
    "first_name": ""
},
"title": "Django the title",

Now I need every file field related to Topics field with the first name and email of the user.

I want to like this:

"user": {
    "username": "akash",
    "first_name": "Akash DK"
    "file":"static/imag.png"
},
"title": "Django the title",

Thanks in advance

1 Answer 1

1

You could use a SerializerMethodField in your UserInfo serializer to lookup the profile image and add it to the output data.

class UserInfo(serializers.ModelSerializer):
    file = serializers.SerializerMethodField()

    def get_file(self, user):
        return UserProfile.objects.get(user=user).file.url

    class Meta:
        model = User
        fields = ['username','first_name', 'file']
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.