0

以下のコードで問題が発生することはありますか? これは、最初の保存時に GUID を与えるモデルの保存機能です。私の問題は、新しい受信者を(管理者に)保存すると、最後に追加された受信者が上書きされることです。アップデートは完璧に機能しているようです。

Models.py の一部

class GUID():
    make = hashlib.sha1(str(random.random())).hexdigest()


def save(self, *args, **kwargs):
    if not self.recipientid:
        self.recipientid = GUID.make
    super(Recipient, self).save(*args, **kwargs)
4

2 に答える 2

2

GUID.make は GUID クラスの作成時に設定され、実行のたびに再計算されることはありません。あなたがGUIDをどのように使用しているかについての残りのコンテキストはわかりませんが、関数にする必要があります。

class GUID(object):
    @staticmethod
    def make():
         return hashlib.sha1(str(random.random())).hexdigest()

...

def save(self, *args, **kwargs):
    if not self.recipientid:
        self.recipientid = GUID.make()
    super(Recipient, self).save(*args, **kwargs)
于 2013-01-29T12:38:43.443 に答える
1

一般的に言えば、あなたがやろうとしていることを行う方法は、デフォルトのラムダを使用することです(この例では、標準のpython uuidを使用しています):

from django.db import models
from uuid import uuid4

class YourModel(models.Model):
    # ...
    recipientid = models.CharField(max_length=32, default=lambda: uuid4().hex)
于 2013-01-29T12:21:20.713 に答える