Как автоматически генерировать qr-код при добавлении элементов в Django

здесь я хочу автоматически генерировать уникальный qr-код для каждого товара, когда товары создаются в Django

вот мой models.py

def qr_code_file_name(instance, filename):
    char_set = string.ascii_uppercase + string.digits
    dat =  ''.join(random.sample(char_set*6, 12))
    return 'qrimage/' + str(instance.client_id) + '/' + dat + '_' + re.sub(r'[^a-zA-Z0-9-_.]', r'_', filename);


class Items(models.Model):
     client = models.ForeignKey("core.Client", related_name="job_items")
     item_name = models.CharField(max_length=512)
     cost_price = models.DecimalField(null=True, max_digits=10, decimal_places=2, default=0.00, verbose_name='Purchase price')
     common_name = models.CharField(max_length=512, blank=True, null=True)
     qr_code = models.ImageField(upload_to=qr_code_file_name, blank=True, null=True) 

Вот мой forms.py

class JobItemForm(BetterModelForm):
    def __init__(self, *args, **kwargs):
        self.client = kwargs.get("initial", {}).get("client")
        super(JobItemForm, self).__init__(*args, **kwargs)
        client = kwargs.get("initial", {}).get("client")
        .....
        .....


   def clean(self):
        cleaned_data = super(JobItemForm, self).clean()
        client = self.client
        pk = self.instance.pk
        name = cleaned_data.get('item_name')
        
        if pk is None:
            same_items = Items.objects.filter(
                                item_name=name, client_id=client)
            if same_items.exists():
                raise forms.ValidationError('The item with same name and part number already exists.')

        return cleaned_data

    class Meta:
        model = Items
        exclude = ('client')
        fields = ('item_name','common_name','cost_price','qr_code')

Вот мой views.py

class JobItemCreateView(CustomAuthMixin, CreateView):
    model = Items
    form_class = JobItemForm
    context_object_name = "type"
    template_name = "jobs/jobitem_form.django.html"
    
    def get_initial(self):
       initial = super(JobItemCreateView, self).get_initial()
       initial['client'] = self.request.user.client
       initial['created_by'] = self.request.user
       return initial

    def form_valid(self, form):
       client = self.request.user.client
       self.object = form.save(commit=False)
       self.object.client = self.request.user.client
       with transaction.atomic():
            self.object.save()
       messages.success(self.request, 'Item successfuly created.')
       return redirect(self.get_success_url())


    def get_success_url(self):
       path = self.request.path

       if path == '/items/jobs/addjob/items/':
          return reverse_lazy("job form")
       else:
          return reverse("items:item list")

Теперь, используя эти данные, пожалуйста, помогите мне автоматически генерировать уникальный qr-код при добавлении и сохранении элементов в модели в django, в настоящее время моя версия django 1.8

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