0

django1.6 アプリケーションで一意の文字列を生成したいと考えています。そのために、主キー (autofield) と文字列を連結したいと考えています。私のコードは

class Complaints(models.Model):
    gid     = models.AutoField(primary_key=True) 
    complaint_no    = models.CharField(max_length=50)       
    status      = models.IntegerField(default=0,blank=False,null=False)
    def __str__(self):
        return ('%s %s' % (self.gid, self.complaint_no))

    def save(self, force_insert=False, force_update=False):     
        self.complaint_no = '%s%d' % (self.complaint_no,self.gid)
        super(Complaints, self).save(force_insert, force_update)    
    class Meta:
        db_table = 'complaints'
        verbose_name = "complaints"     

しかし、私は次のようなエラーメッセージを受け取りました

/callcenter/register/ の TypeError

%d 形式: 数値が必要です。NoneType ではありません

このエラーを解決するのを手伝ってください!

4

2 に答える 2

0

super()最初に電話する必要があります。

ドキュメントで読むことができるように:

ID の値は Django ではなくデータベースによって計算されるため、save() を呼び出す前に ID の値を知る方法はありません。

を呼び出すsuper().save()と、データベース エンジンが を計算しid(またはgid、あなたの場合は、提供された を使用することを再検討してくださいid)、それを使用できるようにします。その前はNone.

このトピックも確認できます。

于 2014-07-24T11:20:47.417 に答える