在 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>