Как сделать несколько запросов к базе данных? - PullRequest
0 голосов
/ 15 февраля 2019

Я хотел бы создать систему ваучеров и позволить администраторам создавать многочисленные коды ваучеров с различными значениями.

def randomString(stringLenght=8):
letters = string.ascii_letters + string.digits
return ''.join(random.sample(letters, stringLenght))


class VoucherCreateView(CreateView):
model = Voucher
form_class = VoucherCreateForm
template_name = 'voucher/VoucherCreateView.html'
success_url = reverse_lazy('voucher:voucher_create')

def form_valid(self, form):
    x = self.request.POST.get('value_x')
    x = int(x)
    for i in range(0, x):
        i = randomString()
        e = Voucher(voucher=i, money=self.request.POST['value_money'])
        e.save()
    return super(VoucherCreateView, self).form_valid(form)

Models.py:

class Voucher(models.Model):
voucher = models.CharField(max_length=8, unique=True)
money = models.SmallIntegerField(blank=True)
created = models.DateTimeField(auto_now_add=True)
used = models.BooleanField(default=False)

Forms.py:

class VoucherCreateForm(forms.ModelForm):
value_x = forms.IntegerField(required=True)
value_money = forms.IntegerField(required=True)

class Meta:
    model = Voucher
    fields = ['voucher', 'money']

Я хотел бы добавить это к моему sql, используя запросы.Любая идея о том, как это сделать?

РЕДАКТИРОВАТЬ // решение ниже, и если есть такая ошибка, вам нужно изменить return super(VoucherCreateView, self).form_valid(form) например return HttpResponse('success')

1 Ответ

0 голосов
/ 15 февраля 2019

вы можете попробовать с django-bluk-create ссылкой

для вашего случая

def form_valid(self, form):
    x = self.request.POST.get('value_x')
    x = int(x)
    objs = [
        Voucher(voucher=randomString(), money=int('0' + self.request.POST['value_money']))
        for i in range(0, x)
    ]
    Voucher.objects.bulk_create(objs)
    return super(VoucherCreateView, self).form_valid(form)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...