に真=フルでToManyFieldのフィールドを制限することができます。そして、それぞれのマシンに組み込みユーザーオブジェクト(マネージャー)のリストを返します。は、どのように私は次のリソースを持っているジャンゴ - tastypie
ただし、私はマネージャーのユーザーから1〜2フィールドしか必要としません。私はマネージャーのパスと他の私的なデータを含むことを望んでいません。
私が見る限り、これを簡単に行う方法はありませんか?
に真=フルでToManyFieldのフィールドを制限することができます。そして、それぞれのマシンに組み込みユーザーオブジェクト(マネージャー)のリストを返します。は、どのように私は次のリソースを持っているジャンゴ - tastypie
ただし、私はマネージャーのユーザーから1〜2フィールドしか必要としません。私はマネージャーのパスと他の私的なデータを含むことを望んでいません。
私が見る限り、これを簡単に行う方法はありませんか?
私は個人的には少し洗練同じモデルクラスのための2つのModelResource
の作成の概念を見つけます。たとえば、UserResource
の詳細ビューで電子メールフィールドを表示したいが、MachineResource
の一部として完全なオブジェクトとして表示されていないとします。問題を解決する方法は、dehydrate
メソッドの埋め込みオブジェクトのデータディクショナリで必須ではないフィールドのキーを削除することです。おそらくちょっとハッキリですが、私のためにうまく動作します。あなたの場合、次のようにすることができます:
class MachineResource(ModelResource):
manager = fields.ToOneField(UserResource, 'manager',full=True)
class Meta:
queryset = Service.objects.filter(service_type='machine')
resource_name = 'machine'
def dehydrate(self,bundle):
del bundle.data['manager'].data['email']
return bundle
Quick Start section for django-tastypieをご覧ください。そこに完璧な例があります。 User
(あなたの「マネージャ」)のModelResource
サブクラスを定義するときは、表示したくないフィールドのリストにexclude
属性を設定してMeta
クラスを追加するだけです。
class UserResource(ModelResource):
class Meta:
queryset = User.objects.all()
resource_name = 'auth/user'
excludes = ['email', 'password', 'is_superuser']
ああ、これは意味があります。それは、私がMachineResourceに埋め込むために特に別のUserResourceを作成する必要があることを意味します(私はMachineResourceクラスで除外したいものに異なるフィールドを除外した一般的なUserResourceクラスを既に持っています)。 –
これは、いくつかのURLからアクセス可能なUserResourceの冗長なバリアントを必要としないので、避けたいものです。どういうわけかそのURLを削除できると思います...? –
'リソース'は自動的にURLを取得しません。あなたは 'urls.py'でそれらを接続しなければなりません。特に 'full = True'を実行している場合は、それ自体のURLは必要ありません。 –