0

我正在使用 object.create 将记录存储到 django 数据库:

     result = MyObject.objects.create(var1='foo',
                                      var2='bar',
                                         ...
                                     )

在此执行之后result是返回的任何字符串__str__(我通过将其更改为 来确认这一点return self.id)。我想访问主键值,因为在某些情况下,下一步是创建另一条记录,该记录通过外键引用该记录,但我真的很想__str__返回比这更有意义的东西。

我意识到我可以抓取最近创建的,但这将是具有多个并发用户的线程代码,因此有可能以真正不幸的方式失败。

我正在使用 SQLite db 进行开发,但将切换到 MySQL 进行生产,所以如果有一种方法可以解决这个需要 mySQL 的问题,我现在可以进行切换。

更新 - 没关系

好吧,我知道发生了什么。在第一次通过调用创建时不会发生,虽然result被定义它不是一个对象。

谢谢大家。进一步挖掘以回应您的评论是导致我找到它的原因。

<尴尬地溜走>

4

3 回答 3

1
# No reporters are in the system yet.
>>> Reporter.objects.all()
[]

# Create a new Reporter.
>>> r = Reporter(full_name='John Smith')

# Save the object into the database. You have to call save() explicitly.
>>> r.save()

# Now it has an ID.
>>> r.id
1

# Now the new reporter is in the database.
>>> Reporter.objects.all()
[<Reporter: John Smith>]

# Fields are represented as attributes on the Python object.
>>> r.full_name
'John Smith'

另见:https ://docs.djangoproject.com/en/1.5/intro/overview/

于 2013-10-23T01:23:35.150 回答
0

调用动作create将新实例保存到数据库中。result现在有一个pk属性,它是它的 id。

注意result实际对象,不是结果__str__。另外,您可以使用对象而不是其 ID 来设置另一个对象的外键。

于 2013-10-22T22:31:11.020 回答
0

result.pk 应该给你主键“pk”是定义为主键的字段的别名。

于 2013-10-22T22:33:24.333 回答