0

私はこのリソースを取得しました。それは正常に機能しており、従業員のすべての属性をリストしています。

class EmployeeResource(ModelResource):
    journey = fields.ForeignKey(WorkJourney, 'work_journey')
    class Meta:
        queryset = Employee.objects.all()
        resource_name = 'employee'
        authentication = BasicAuthentication()

Employee のモデル Class に、Employee からの電話番号をリストするメソッドを記述しています (ひどいコード imo。属性である必要があると思いますが、変更できません)。

@property
def phones(self):
    return u' / '.join([self.personal_phones or u'', self.institutional_phones or u''])

ポイントは、その Model メソッドにアクセスする Resource メソッドを記述し、従業員の属性で結果を一覧表示することです。

4

2 に答える 2

1

電話モデルが次のようになっている場合:

class Phone(models.Model)
     employee = models.ForeignKey(Employee, related_name=phones)

次に、EmployeeResource ToManyRelationで電話を定義して、従業員のすべての電話のリストを取得できます。

class EmployeeResource(ModelResource):
   phones = fields.ToManyField(PhoneResource, 'phones', full=True)
class Meta:
    queryset = Employee.objects.all()
    resource_name = 'employee'
    authentication = BasicAuthentication()

また、オーバーライド脱水メソッドを使用すると、クライアント側に送信されるデータをカスタマイズできます。

カスタムビューは、カスタマイズデータを送信するためのもう1つのソリューションです。

于 2013-02-08T18:49:32.443 に答える
1

リソースで読み取り専用フィールドとして作成できるはずです。

phones = fields.CharField(attribute='phones', readonly=True)

を設定しない場合readonly=True、Tastypie は挿入/更新時にフィールドの値を設定しようとします。

于 2013-02-08T16:03:30.643 に答える