在使用用户ID决定查询集中应返回的内容时,我在尝试以用户身份登录后如何运行查询时遇到问题。在做以下所有我得到的回报是 -
'str' object is not callable
我现在在基本设置上使用夹层,使用可以在UserFile模型上查看某些结果的set帐户进行安装,但不是全部。
从SQL语法我想要做的是以下 -
select * from UserFile where userid = (user that's logged in)
这是我的views.py -
class Vendor_Matrix(mixins.ListModelMixin,
mixins.CreateModelMixin,
generics.GenericAPIView):
serializer_class = User_Serializer
permission_classes = (User, permissions.IsAuthenticated)
def get(self, request, *args, **kwargs):
user = request.user
queryset = UserFile.objects.filter(username=request.user).values_list('vendorid', 'fileid', 'grant_date', 'revoke_date')
return self.retrieve(request, *args, **kwargs)
我的models.py
class UserFile(models.Model):
userid = models.ForeignKey(User, db_column='userid')
fileid = models.ForeignKey(FileIndex, db_column='id')
grant_date = models.DateTimeField()
revoke_date = models.DateTimeField()
class Meta:
db_table = 'auth_files'
verbose_name = 'User File Matrix'
verbose_name_plural = 'User File Matricies'
我通过以下方式调用它 -
urls.py
urlpatterns = patterns('',
url(r'^your-data/vendor-matrix/$', 'vendor_matrix'),
)
答案 0 :(得分:1)
根据我的理解,您尝试过滤username=....
,UserFile
模型中没有字段用户名,此外vendorid
也丢失了吗?
错误可能是因为Django无法解析'vendorid'字符串,因为没有相应的字段,并且说明此str不可调用。
可能有助于查看完整的堆栈,并且如果仅部分记录模型以获得完整的模型。
答案 1 :(得分:0)
我最终通过专注于将我的视图剥离到骨架并再次构建它来完成工作。这有效 -
def index(request):
userid = None
if request.user.is_authenticated():
userid = request.user.id
queryset = UserFile.objects.filter(userid=userid).values_list('fileid', 'grant_date', 'revoke_date')
return JSONResponse(queryset)