1

これは非常に単純な質問だと思いますが、Python は初めてで、同時に Django も学習しています。

私の目的は、文字列辞書表現を作成することです。つまり、辞書形式ですが、Django のモデルのインスタンスの文字列です。どうすればそれができますか?オブジェクトのインスタンスから直接呼び出すことができる組み込み関数はありますか、それとも定義する必要がありますか?

アップデート:

モデル定義自体の中でこの機能を呼び出したいと思います。つまり、この機能を必要とするクラス メソッドまたは関数を実装しています。Python の組み込み関数のように動作する機能を考えていますlocals()が、モデルの属性のみを返す必要があります。

また、データベースにまだ保存されていないモデルのインスタンスでこの機能を呼び出すことも追加したいと思います。したがって、本質的には、まだデータベースにないレコードを表すモデルのインスタンスで作業します。したがって、私が推測するを使用する関数Manager or QuerySetは、私が探している理由ではありません。

例:

class Person(models.Model):
     name = ...
     age =  ...

     def func_doing_something(self):
          #get the string dictionary representation of this model's instance
          #do something to it
          #return something

みんな、ありがとう!

4

3 に答える 3

1

たとえば、django 組み込みシリアライザーを使用して、オブジェクトを json 形式にシリアライズ できます。これにより、非常に簡単にデシリアライズできます。

于 2012-06-06T09:30:12.433 に答える
1

p = Person(name='john', age=10).values() を使用します

ここを参照してください: https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values

それを文字列にするには、次のようにします。

s = str(p[0])
于 2012-06-06T09:17:29.773 に答える
1

このSO投稿から、探していた解決策を見つけました...

Django オブジェクトobj

[(field.name, getattr(obj,field.name)) for field in obj._meta.fields]

結果を呼び出すだけdict()です。

于 2012-06-09T18:42:10.603 に答える