我在 django 中使用我自己的用户类扩展了 User
Django 类:
class MyUser(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True, related_name='my_user')
theme = models.IntegerField(default=0)
tags = TaggableManager()
以及相应的 tastypie 资源,我想将其与 Django 用户类中的用户名一起使用 detail_uri_name
。虽然,我不知道如何。
class MyUserResource(ModelResource):
class Meta:
queryset = User.objects.all()
allowed_methods = ['get']
detail_uri_name = 'user_username'# ????
我遇到的错误是:'MyUser'对象没有属性'user__username'
如何从 MyUser
访问用户名
作为属性?
该行是:
detail_uri_name = 'user_username'# ????
从 shell 中,我可以执行 MyUser.objects.all()[0].user.username
来获取关联 django 类的用户名。
最佳答案
您不能使用其他类属性作为detail_uri_name
。
但是,理论上:
class MyUserResource(ModelResource):
class Meta:
queryset = User.objects.all().select_related('user')
allowed_methods = ['get']
detail_uri_name = 'user__username'
def get_bundle_detail_data(self, bundle):
attrs = self._meta.detail_uri_name.split('__')
return getattr(getattr(bundle.obj, attrs[0]), attrs[1])
关于python - Tastypie的detail_uri_name与foreignkey的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38648946/