mercredi 14 octobre 2015

How to send data set to multiple rows in same table using save method (in Django 1.8 / SQLLIte )?

I code my project using Django 1.8. This is my model class.

 # encoding: utf-8
from django.contrib.auth.models import User
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django.utils.timezone import now
from .algo import  algo
from django.http import HttpResponse




@python_2_unicode_compatible
class Key_Gen(models.Model):
    key_beging_code =models.DecimalField('Brand_name +Pack_size' ,max_digits=5, decimal_places=2)
    key_quantity    =models.DecimalField("key Quantity" ,max_digits=19, decimal_places=10)
    key_code        =models.CharField('key Code' ,max_length=50 , unique=True)
    is_public = models.BooleanField('public', default=True)
    date_created = models.DateTimeField('date created',auto_now_add=True)
    date_updated = models.DateTimeField('date updated',auto_now_add=True)



    class Meta:
        verbose_name='key_Gen'
        verbose_name_plural='keys_Gen'
        ordering = ['-date_created']


    def __str__(self):
        return '%s' % (self.key_code)





    def get_key_code(self,x,y):
        alist = []
        x = algo(int(x),int(y),alist)
        keys =x.id_generator()
        return keys


    def save(self, *args, **kwargs):
        if not self.key_code:
            self.key_code_temp =self.get_key_code(self.key_beging_code,self.key_quantity)
        self.key_code_temp =self.get_key_code(self.key_beging_code,self.key_quantity)

        i=0;
        for x in self.key_code_temp:
            i +=1;
            self.key_code = self.key_code_temp[i-1]
            super(Key_Gen, self).save(*args, **kwargs)

I call algo function and it return data list from this function.

self.key_code_tempt=self.get_key_code(self.key_beging_code,self.key_quantity) #eg . ['001R','OU3R', '4002']

I want to send this data one by one to database table.but current send only one value to database.

I put for loop to iterate my list and call '.save' method repeatedly.but I doesn’t show it call repeatedly. I am new comer to python web programming and hope some expert help.I notice key list is pass well , but for loop inside save method run only once.

============view class code==================================

  @login_required
def key_create(request):
    if request.method == 'POST':
        form = KeyGenarateForm(data=request.POST)
        if form.is_valid():
             request.POST._mutable = True         
             Key_Gen = form.save(commit=False)  
             Key_Gen.save()

             return redirect('marcador_bookmark_user',username=request.user.username)
    else:
        form = KeyGenarateForm()
    context = {'form': form, 'create_key': True}
    return render(request, 'marcador/key_genarate_form.html', context)

Aucun commentaire:

Enregistrer un commentaire