I'm using Django REST Framework that will allow users to save information and generate QR code image which will be URL of the user profile such as: http://127.0.0.1:8000/user/detail/fahad-md-kamal-fd028af3/
Something Like
How can I access host address from Django Model so that I can use it to generate QR code?
DRF Model
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)
Serializer Class
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()
While I was doing it with standared Django and Functional View I did it like:
Functional View:
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'])
Over ridding Model Class's save method
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)