0

i found some problem when i try to update multiple object in my models. here is my models:

class NumberSequence(models.Model):
    code = models.CharField(max_length=12)
    name = models.CharField(max_length=60)
    prefix = models.CharField(max_length=3)
    length = models.IntegerField()
    last = models.IntegerField(verbose_name='Last Number Used')

def getNumberSequence():
    ns = NumberSequence.objects.filter(code='REQ')
    letter =  ns[0].prefix
    lastNumber = ns[0].last+1
    l = '{0}-{1:0'+str(ns[0].length)+'d}'

    for num in ns:
        num.last = lastNumber
        num.save()

    return l.format(letter,lastNumber+1)


class Requisitions(models.Model):
    number = models.CharField(max_length=20, default=getNumberSequence())
    transDate = models.DateField(verbose_name='Date')
    businessUnit = models.ForeignKey(BusinessUnit, verbose_name='Unit')
    division = models.ForeignKey(Division, verbose_name='Division')
    remarks = models.TextField
    status = models.IntegerField(verbose_name='Status')

when i create new record in Requisition, the table Number Sequence does not update. but if i restart the service, the number sequence table updated automatically. what's happened with my code? any suggestion, please..

Pams
  • 25
  • 3

1 Answers1

0

You should not call the default function in your field definition, but pass the callable only without parentheses.

number = models.CharField(max_length=20, default=getNumberSequence)
Daniel Roseman
  • 588,541
  • 66
  • 880
  • 895
  • thanks @Daniel.. but i still have error in my models. when i created new record in Requisitions, the sequence number updated + 2. it should be updated + 1. – Pams Jul 31 '17 at 01:17