我可以在Django视图中动态设置字段名称吗?
我想要这个代码
CategoryNick.objects.get(author=self.request.user).get(field=slug)
但发生错误
AttributeError: 'CategoryNick' object has no attribute 'get'
有解决这个问题的好方法吗?
如果您知道解决方案,谢谢您让我知道
总代码
def get_context_data(self, *, object_list=None, **kwargs):
context = super(type(self), self).get_context_data(**kwargs)
context['posts_without_category'] = MyShortCut.objects.filter(category=None,author=self.request.user).count()
context['category_list'] = Category.objects.all()
slug = self.kwargs['slug']
if slug == '_none':
context['category'] = 'no_category'
else:
category = Category.objects.get(slug=slug)
context['category'] = category
context['category_nick'] = CategoryNick.objects.get(author=self.request.user).get(field=slug)
return context
答案 0 :(得分:1)
如果要检索对象的field
,则可以在此处使用.values_list(..., flat=True)
[Django-doc],例如:
CategoryNick.objects.values_list('slug', flat=True).get(author=self.request.user)
因此,您将在此处检索该slug
的{{1}}值。如果改用CategoryNick
,则将获得主键。
但是仅查询给定的字段名有点“奇怪”。
答案 1 :(得分:1)
您不必像这样CategoryNick.objects.get(author=self.request.user).get(field=slug)
那样做CategoryNick.objects.get(author=self.request.user, field=slug)