Генерировать qr-код и при сканировании отображать url-данные в django

здесь при добавлении элемента нужно автоматически генерировать qrcode и при сканировании камерой мобильного телефона показывать url данные

Python version = 2.7
Django version = 1.8
qrcode version = 6.0

рассмотрим мой models.py как

def qr_code_file_name(instance, filename):
    return '%s/qr_codes/%s/' % (instance.client_id, filename)

class StockItems(models.Model):
    item_name = models.CharField(max_length=512)
    qr_code = models.ImageField(upload_to=qr_code_file_name, blank=True, null=True)


    def __unicode__(self):
        return self.item_name

    def save(self, *args, **kwargs):
        qrcode_img = qrcode.make(self.item_name)
        canvas = Image.new('RGB',(90,90),'white')
        draw = ImageDraw.Draw(canvas)
        canvas.paste(qrcode_img)
        fname = File('qrcode-code1.png')
        buffer = BytesIO()
        canvas.save(buffer,'PNG')
        self.qr_code.save(fname,File(buffer),save=False)
        canvas.close()

Когда я пытаюсь сохранить созданный новый элемент и автоматически сохранить qr_code, я получаю ошибку

Вот моя трассировка ошибки

Traceback (most recent call last):
    File "/home/andrew/.virtualenvs/projectscan/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
        response = wrapped_callback(request, *callback_args, **callback_kwargs)
    File "/home/andrew/.virtualenvs/projectscan/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py", line 22, in _wrapped_view
        return view_func(request, *args, **kwargs)
    File "/home/andrew/.virtualenvs/projectscan/local/lib/python2.7/site-packages/django/views/generic/base.py", line 71, in view
        return self.dispatch(request, *args, **kwargs)
    File "/home/andrew/devel/projectscan/mcam/server/mcam/core/views.py", line 516, in dispatch
        return super(CustomAuthMixin, self).dispatch(request, *args, **kwargs)
    File "/home/andrew/.virtualenvs/projectscan/local/lib/python2.7/site-packages/braces/views/_access.py", line 102, in dispatch
        request, *args, **kwargs)
    File "/home/andrew/.virtualenvs/projectscan/local/lib/python2.7/site-packages/django/views/generic/base.py", line 89, in dispatch
        return handler(request, *args, **kwargs)
    File "/home/andrew/.virtualenvs/projectscan/local/lib/python2.7/site-packages/django/views/generic/edit.py", line 249, in post
        return super(BaseCreateView, self).post(request, *args, **kwargs)
    File "/home/andrew/.virtualenvs/projectscan/local/lib/python2.7/site-packages/django/views/generic/edit.py", line 215, in post
        return self.form_valid(form)
   File "/home/andrew/devel/projectscan/mcam/server/mcam/crm/views.py", line 6225, in form_valid
        self.object.save()
   File "/home/andrew/devel/projectscan/mcam/server/mcam/crm/models.py", line 2980, in save
        self.qr_code.save(fname,File(buffer),save=False)
   File "/home/andrew/.virtualenvs/projectscan/local/lib/python2.7/site-packages/django/db/models/fields/files.py", line 107, in save
        self._size = content.size
   File "/home/andrew/.virtualenvs/projectscan/local/lib/python2.7/site-packages/django/core/files/base.py", line 59, in _get_size
        self._size = self._get_size_from_underlying_file()
   File "/home/andrew/.virtualenvs/projectscan/local/lib/python2.7/site-packages/django/core/files/base.py", line 49, in _get_size_from_underlying_file
        pos = self.file.tell()
    ValueError: I/O operation on closed file.

Пожалуйста, помогите мне, как я могу решить эту ошибку и сохранить мой qr_код в базе данных, а при сканировании с помощью камеры мобильного телефона он должен перенаправлять на следующий url

url(r'^jobs/items_detail_view_2/(?P<pk>\d+)$', item_detail_view_2, name="item_detail_view_2"),

Для этого нам нужно сохранить url в qr-коде пример https://dev.projectscan.com/

Вернуться на верх