Как вывести информацию о хосте из модели Django при использовании ModelViewSet из REST Framework

Я использую Django REST Framework, который позволит пользователям сохранять информацию и генерировать изображение QR-кода, которое будет URL профиля пользователя, например: http://127.0.0.1:8000/user/detail/fahad-md-kamal-fd028af3/

"Что-то вроде

enter image description here

Как я могу получить адрес хоста из Django Model, чтобы использовать его для генерации QR-кода?

DRF Модель

class UserInfo(models.Model):

    def save(self, *args, **kwargs):

        if not self.slug:
            self.slug =f'{slugify(self.name)}'
        qrcode_image = qrcode.make(f"{host}/{self.slug}/")
        super(UserInfo, self).save(*args, **kwargs)

Класс сериализатора

class UserBaseReadSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = models.UserBase
        fields = (
            'url',
            'phone',
            'name',
            'address',
            'qr_code',
            'slug',
        )

View Class:

    class UserInfoViewSet(viewsets.ModelViewSet):
       serializer_class = serializers.UserBaseSerializer
       queryset = models.UserInfo.objects.all()

Когда я делал это с помощью стандартного Django и функционального представления, я делал это следующим образом:

Функциональный вид:

def add_user_info(request):
    if request.method == 'POST':
        form_data = UserInfomationForm(request.POST)
        if form_data.is_valid():
            obj = form_data.save(commit=False)
            obj.save(host =request.META['HTTP_ORIGIN'])

Отмена метода сохранения класса модели

class UserInfo(models.Model):
    def save(self, host=None, *args, **kwargs):
        if not self.slug:
            self.slug =f'{slugify(self.name)}-{str(uuid.uuid4())[:8]}'
        qrcode_image = qrcode.make(f"{host}/{self.slug}/")
        super(UserInfo, self).save(*args, **kwargs)
Вернуться на верх