5

すでに同じことを求める質問がいくつかあります。しかし、それらは2010年のものであり、あまり役に立ちませんでした。それで、2010年以降、この面での更新があったのではないかと思います。

グーグルで私は自然キーの使用法を説明するこのリンクを見つけました。しかし、私の問題は、そこから異物を取得することに関するものなので、役に立ちません。django.contrib.auth.models.User

私の問題は次のとおりです。QuerySetをシリアル化して、外部キーオブジェクトも取得するようにします。これは、JSONとしてクライアントに渡すためです。からのdjango.coreシリアライザーはそれを行いません。したがって、私の場合、単に問題を解決するために、モデルに別のフィールドを追加して、外部オブジェクトから必要な値を含めました。ただし、冗長データが発生します。

私のサンプルモデルには、username可能であれば削除したいものが含まれており、代わりに外部キーで取得します。

    user = models.ForeignKey(User)
    username = models.CharField(max_length=100, null=False)
4

2 に答える 2

6

これを回避する1つの潜在的な方法は、クエリセットの戻り値に基づいて独自のディクショナリオブジェクトを構築することです。あなたはこのようなことをするでしょう:

queryset = Model.objects.all()
list = [] #create list
for row in queryset: #populate list
    list.append({'title':row.title, 'body': row.body, 'name': row.user.username})
recipe_list_json = json.dumps(list) #dump list as JSON
return HttpResponse(recipe_list_json, 'application/javascript')

これを機能させるには、jsonをインポートする必要があります。

import json
于 2012-05-08T22:08:21.800 に答える
1

DjangoRESTフレームワークのシリアライザーを使用できます

于 2014-04-29T11:34:39.153 に答える