我想更新用户配置文件,将用户uuid传递为kwarg。以下是url:
path("profile/update/<uuid:pk>", UpdateProfile.as_view(), name="update_profile"),
然而,在我尝试更新我的个人资料后,它给了我一个错误。以下是我的观点:
class UpdateProfile(LoginRequiredMixin, UpdateView):
model = Profile
user_type_fields = {
"Buyer": ["photo", "first_name", "last_name", "city"],
"Celler": ["photo", "name", "city", "address"],
}
def get(self, request, *args, **kwargs):
print(kwargs)
self.fields = self.user_type_fields[get_user_model().objects.get(pk=kwargs["pk"]).type]
return super().get(request, *args, **kwargs)
下面是错误本身:
Page not found (404)
No profile found matching the query
据我所知,django试图找到uuid和url一样的profile,但没有找到,并返回这个错误。然而,如果我把视图中的model改为user,它将无法找到字段,因为它们属于profile model。唯一有效的选择是将profile id作为kwarg传递,但出于安全原因,我不认为这是更好的选择。
有人能给我一个建议,如何更新配置文件与用户uuid在kwargs?谢谢提前!
UPD:以下是用户和配置文件模型:
第一个
1条答案
按热度按时间rkue9o1l1#
假设以下模型,其中用户只有一个配置文件:
然后可以覆盖
get_object()
方法:然后像平常一样使用UpdateView。