2013-02-08 72 views
0

我得到了這個資源,它工作正常,列出了員工的所有屬性。在TastyPie資源上訪問「服務器端」模型方法

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

我writen對員工的模型類的方法,從一個員工列出了電話號碼的(可怕的伊莫代碼,我認爲它應該是一個屬性,但我不能改變它)。

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

關鍵是要編寫訪問模型方法,並列出結果與員工的屬性的資源方法..

回答

1

您應該能夠將其創建爲您的資源只讀域:

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

如果您未設置readonly=True,Tastypie會嘗試設置插入/更新時的字段值。

0

如果您的手機型號是這樣的:

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() 

還與覆蓋脫水方法可以自定義數據將發送給客戶端的內容。

自定義視圖是發送自定義數據的另一種解決方案。

相關問題