0

== True が確認された場合、プログラムにこの一意の番号を生成させようとしています。

class PurchaseOrder(models.Model):
    po_number = models.IntegerField(unique=True)
    confirmed = models.NullBooleanField(null=True)

 def save(self, *args, **kwargs):
    if not self.pk:
        self.po_number = self.validPONumber()
    super(PurchaseOrder, self).save(*args, **kwargs)

def validPONumber(self):
     low= 50000
     high =1000000
     random.seed()
     value = random.randrange(low, high)
     while 0 < len(PurchaseOrder.objects.filter(po_number=value)):
        value = random.randrange(low, high)
     return value

したがって、基本的には、== True と確認された場合にのみ po_number を生成します。ランダムな場所にロジックを挿入しようとしましたが、エラーが発生しています。どこに置けばいいですか?

4

1 に答える 1

2

メソッドに入れるのは理にかなっていると思いますsave

def save(self, *args, **kwargs):
    if not self.pk and self.confirmed:
        self.po_number = self.validPONumber()
    super(PurchaseOrder, self).save(*args, **kwargs)

これは、レコードが新規である必要があることを指定します。confirmed == True

新しいレコードからのみ生成したいですか? レコードを更新するときにチェックを実行しますか? saveその場合、メソッドが呼び出されるたびに設定できます。

def save(self, *args, **kwargs):
    if self.confirmed:
        self.po_number = self.validPONumber()
    super(PurchaseOrder, self).save(*args, **kwargs)
于 2013-08-06T14:45:07.317 に答える