0
所以我有以下型号:Django的自定义保存不工作
class Info(models.Model):
user_id = models.BigIntegerField(primary_key=True)
#...
def save(self,*args,**kwargs):
print 1
is_created = False
if not self.pk:
print 2
is_created = True
super(Info, self).save(*args, **kwargs)
print 3
if is_created:
print 4
signals.info_created.send(sender=self.__class__,info=self)
现在我有这些打印语句来跟踪什么on.when去的我无论是运行或Info.create(...)
info = Info(...)
info.save()
我得到以下输出:
1
3
这表明if not self.pk
语句评估为f ALSE。现在我假设这是因为我有一个自定义的主键需要在创建该对象时给出。所以这里是我的问题:是我的假设是否正确?无论是否是,我怎样才能得到这个自定义保存合作?
这是我之前的预期从构造kwargs填补。请注意,我的问题有两个部分,请回答第二个 –
也许尝试使用BigIntegerField(unique = True)? – vadimchin
所以这不回答我的问题。我的问题是,当我需要评估为True时,'if not self.pk'这一行评估为false。而且这个字段必须是一个主键,因为数据库中的优化和一致性 –