'tuple'对象在更新视图上没有属性'ordered'



它给了我这个错误,我一辈子都不明白为什么:

我有一个从django allauth SignupForm扩展而来的表单。。。

class LearnerSignupForm(SignupForm):
first_name = forms.CharField(max_length=40, required=True)
last_name = forms.CharField(max_length=40, required=True)

该表单在allauth注册视图中被调用。。。

class LearnerSignupView(SignupView):
form_class = LearnerSignupForm
success_url = reverse_lazy('users:redirect_profile_mixin')

视图重定向到一个mixin(它扩展了RedirectView,从请求中获取经过验证的用户,并将连接重定向到传递参数user.id.的UpdateView

class LearnerUpdateView(UpdateView):
model = User
form_class = UserForm
formset_Class = LearnerFormSet
template_name = "formset_edit_learner.html"
success_url = "home"
def get_context_data(self, **kwargs):
context = super(LearnerUpdateView, self).get_context_data(**kwargs)
qs = Learner.objects.get_or_create(user=self.request.user)
formset = LearnerFormSet(queryset=qs)
context["learner_formset"] = formset
return context

最后转到UpdateView。就在这一点上,我得到了错误

"元组"对象没有属性"有序">

异常位置:C:\Users\aless.virtualenvs\hs_03-LQeWV4ia\lib\site packages\django\forms\models.py,第639行,在get_queryset 中

我知道我可能在做一些非常愚蠢的事情,但我就是看不出来。我提前感谢任何能提供建议的人!

正如acg所说,您正在处理一个元组:https://docs.djangoproject.com/en/3.1/ref/models/querysets/#get-或创建

返回(object,created(的元组,其中object是检索或创建的对象,created是指定是否创建新对象的布尔值。

因此,在不更改代码的情况下,您应该执行以下操作:

qs = Learner.objects.get_or_create(user=self.request.user)
formset = LearnerFormSet(queryset=qs[0])

但那不是很漂亮,你最好这样做:

qs, created = Learner.objects.get_or_create(user=self.request.user)
formset = LearnerFormSet(queryset=qs)

最新更新