0

object.create を使用して、レコードを django データベースに保存しています。

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

これが実行された後、result文字列が返されます__str__(これを に変更して確認しましたreturn self.id)。次のステップでは、外部キーを介してこのレコードを参照する別のレコードを作成する場合があるため、主キーの値にアクセスしたいと思いますが、__str__それよりも意味のあるものを返したいと思っています。

最近作成されたものを取得できることはわかっていますが、これは複数の同時ユーザーによるスレッド化されたコードになるため、本当に残念な方法で失敗する可能性があります。

私は開発用に SQLite db を使用していますが、運用用に MySQL に切り替える予定です。したがって、mySQL を必要とするこれを解決する方法があれば、今すぐ切り替えることができます。

更新 - 気にしない

わかりました、何が起こっているのか理解しました。最初のパスでは create の呼び出しは行わ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であることに注意してください。さらに、ID ではなくオブジェクトを使用して、別のオブジェクトの外部キーとして設定できます。__str__

于 2013-10-22T22:31:11.020 に答える