0

これが私のコードです:

class Invitation(models.Model):   
    #other fields here
    Code = models.CharField(max_length=128, null=True, blank=True)
    Tags = models.ManyToManyField("CategorieInvitation", null=True, blank=True)
    Tags = models.ManyToManyField("Usage", null=True, blank=True)
    Note = models.CharField(max_length=128, null=True, blank=True)
    Used = models.BooleanField(default=False, blank=True)
    SendTo = models.EmailField(null=True, blank=True)
    # a revoir
    def post_save(self, model_instance, add):
        if self.Code.__len__() == 0 :
            self.Code = generate_invitation(1)[0]
            self.save()

django-adminインターフェースで作成された場合でも、コードが空白またはnullの場合、コードをgenerate_invitationの結果に置き換える方法は?

Bussiereに関して

4

1 に答える 1

2

あなたがやろうとしていることについては、saveメソッドをオーバーライドする方がおそらく簡単で効率的です。

class Invitation(models.Model):   
    #other fields here
    code = models.CharField(max_length=128, null=True, blank=True)
    tags = models.ManyToManyField("CategorieInvitation", null=True, blank=True)
    tags2 = models.ManyToManyField("Usage", null=True, blank=True)
    note = models.CharField(max_length=128, null=True, blank=True)
    used = models.BooleanField(default=False, blank=True)
    send_to = models.EmailField(null=True, blank=True)
    # a revoir

    def save(self, *args, **kwargs):
        if not self.code:
            self.code = generate_invitation(1)[0]

        super(Invitation, self).save(*args, **kwargs)

ちなみに、post_saveモデルインスタンスメソッドであるべきものではありません。参照:https ://docs.djangoproject.com/en/1.4/ref/signals/#signals

于 2012-04-06T17:13:47.670 に答える