在将实例保存到数据库之前如何返回实例?
在下面是类似于我要完成的工作:
class Personne(models.Model):
nom = models.CharField(max_length=100, verbose_name="Origem")
def save(self, *args, **kwargs):
found = None
try:
found = Personne.objects.get(nom=self.nom)
super(Personne, self).save(*args, **kwargs)
except AudioFile.DoesNotExist:
return found
def test_personne_is_the_same(self):
p1 = Personne.objects.create(nom="Malcom X")
p2 = Personne.objects.create(nom="Malcom X")
self.assertEqual(p1, p2)
断言给出:
p1!=无
最佳答案
有多种原因导致您的save()
方法无法按书面方式工作。 (对于其中一个,不使用save()
的返回值,因此return found
无效。)
但是没有理由尝试自己重新发明:摆脱自定义save()
,而只需使用get_or_create()
即可:
def test_personne_is_the_same(self):
p1, _ = Personne.objects.get_or_create(nom="Malcom X")
p2, _ = Personne.objects.get_or_create(nom="Malcom X")
self.assertEqual(p1, p2)
关于python - 在Django中,保存到数据库时如何返回现有模型实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18604632/