在 Django 中使用外键更新视图
UpdateView using foreignkey in Django
有没有一种方法可以在 UpdateView 中通过 foreign key
select 模型数据而不是 pk
?毫无疑问,它适用于数据的 id
,但是如果我将 select 使用 foreign key
条件的模型中的数据对象呢?我该怎么做?
这是我的 UpdateView class:
class SettingsProfileView(UpdateView):
model = UserInfoModel
template_name = 'site/views/settingsprofile.html'
form_class = UserInfoForm
我试着放:
def getquery_set(self):
return self.model.objects.filter(users_id = self.kwargs['pk'])
但它仍然指的是通过 primary key
获取数据。
方法是.get_queryset(..)
[Django-doc] not getquery_set
, but nevertheless, this will not work, since the filtering is done in the .get_object(..)
method [Django-doc]。
因此您可以使用:
from django.shortcuts import get_object_or_404
class SettingsProfileView(UpdateView):
model = UserInfoModel
template_name = 'site/views/settingsprofile.html'
form_class = UserInfoForm
def <b>get_object</b>(self, queryset=None):
if queryset is None:
queryset = self.get_queryset()
return <b>get_object_or_404(queryset, user_id=self.kwargs['pk'])</b>
有没有一种方法可以在 UpdateView 中通过 foreign key
select 模型数据而不是 pk
?毫无疑问,它适用于数据的 id
,但是如果我将 select 使用 foreign key
条件的模型中的数据对象呢?我该怎么做?
这是我的 UpdateView class:
class SettingsProfileView(UpdateView):
model = UserInfoModel
template_name = 'site/views/settingsprofile.html'
form_class = UserInfoForm
我试着放:
def getquery_set(self):
return self.model.objects.filter(users_id = self.kwargs['pk'])
但它仍然指的是通过 primary key
获取数据。
方法是.get_queryset(..)
[Django-doc] not , but nevertheless, this will not work, since the filtering is done in the getquery_set
.get_object(..)
method [Django-doc]。
因此您可以使用:
from django.shortcuts import get_object_or_404
class SettingsProfileView(UpdateView):
model = UserInfoModel
template_name = 'site/views/settingsprofile.html'
form_class = UserInfoForm
def <b>get_object</b>(self, queryset=None):
if queryset is None:
queryset = self.get_queryset()
return <b>get_object_or_404(queryset, user_id=self.kwargs['pk'])</b>