2013-02-08 1 views
0

Я получил этот ресурс, и он отлично работает и перечисляет все атрибуты Employee's.Доступ к «серверным» методам модели на TastyPie Resource

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

У меня есть метод прописан на модели классе Работника, который перечисляет номер телефона от Служащего (Грозного кода IMO., Я думаю, что это должно быть атрибутом, но я не могу изменить его).

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

Также с коррекцией дигидрата вы можете настроить данные, которые будут отправлены на клиентскую сторону.

Пользовательский вид - это еще одно решение для отправки данных.

 Смежные вопросы

  • Нет связанных вопросов^_^