我已使用自定义字段扩展django User
,现在我需要从自定义表中返回json输出以及username
表格父表。
我在查询集中尝试了select_related但它没有返回username
模型
class ExProfile(models.Model):
user = models.ForeignKey(User, unique=True)
cell_phone = models.CharField(max_length=200, blank=True)
api_key= models.CharField(max_length=200, blank=True)
termination_date=models.DateField()
picture=models.ImageField(upload_to='profile',blank=True)
email=models.EmailField()
homeAddress=models.CharField(max_length=200,blank=True)
homeNumber=models.CharField(max_length=200,blank=True)
资源
class ProfileResource(ModelResource):
class Meta:
# the queryset below is working like ExProfile.objects.all() as it is not
# returning username in json
queryset =ExProfile.objects.select_related('User').all()
resource_name = 'entry'
fields = ['username','api_key','email','homeAddress']
#authorization = Authorization()
#authentication = MyAuthentication()
filtering = {
'api_key': ALL,
'homeAddress': ALL,
'email': ALL,
'query': ['icontains',],
}
def apply_filters(self, request, applicable_filters):
base_object_list = super(ProfileResource, self).apply_filters(request, applicable_filters)
query = request.META.get('HTTP_AUTHORIZATION')
if query:
qset = (
Q(api_key=query)
)
base_object_list = base_object_list.filter(qset).distinct()
return base_object_list
我的代码中缺少什么?
答案 0 :(得分:8)
您不需要在此处选择相关内容。
如果您只是想要用户名而不是用户对象添加属性字段,您可以执行正常的Django __关系,例如
class ProfileResource(ModelResource):
uname = fields.CharField(attribute='user__username', readonly=True)
class Meta:
queryset =ExProfile.objects.all()
....