我在Django模型中有一个属性,希望通过TastyPie ModelResource公开。

我的模特是

class UserProfile(models.Model):
    _genderChoices = ((u"M", u"Male"), (u"F", u"Female"))

    user = Models.OneToOneField(User, editable=False)
    gender = models.CharField(max_length=2, choices = _genderChoices)

    def _get_full_name(self):
        return "%s %s" % (self.user.first_name, self.user.last_name)

    fullName = property(_get_full_name)

我的ModelResource是
class UserProfileResource(ModelResource):
    class Meta:
        queryset = models.UserProfile.objects.all()
        authorization = DjangoAuthorization()
        fields = ['gender', 'fullName']

但是,我目前所能获得的所有信息不是:
{
    gender: 'female',
    resource_uri: "/api/v1/userprofile/55/"
}

我曾尝试使用ModelResource中的fields属性,但这并没有帮助。很想了解这里发生了什么。

最佳答案

您应该可以将其定义为field try:

class UserProfileResource(ModelResource):
    fullname = fields.CharField(attribute='_get_full_name', readonly=True)
    class Meta:
        queryset = models.UserProfile.objects.all()
        authorization = DjangoAuthorization()
        fields = ['gender',]

编辑

您还必须在set readonly=True上包含CharField,否则DeliciousPie将尝试在插入或更新时设置其值。

关于python - 如何将Django模型上的属性(虚拟字段)公开为DeliciousPie ModelResource中的字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9078035/

10-10 19:10