简体   繁体   English

Django AttributeError:“ str”对象没有属性“ model”

[英]Django AttributeError: 'str' object has no attribute 'model'

I have the below form; 我有以下表格;

class RemoveMemberForm(Form):
    member = forms.ModelChoiceField(queryset="",
                                  empty_label='Choose a Member',
    )

And the below views; 以及以下观点;

class StationHome(View):
    def get(self, request, pk):
        station = Station.objects.get(pk=pk)
        channels = Channel.objects.filter(station=station)
        members = station.members.all()
        form1 = AddMemberForm()
        form2 = RemoveMemberForm()
        form2.fields['member'].queryset = station.members.all()
        return render(request, 
                      "home_station.html",
                      {"station":station,
                       "form1":form1,
                       "form2":form2,
                       "channels":channels,
                       "members":members,
                   },
                  )

class MemberRemove(View):
    def post(self, request, pk):
        form = RemoveMemberForm(request.POST)
        if form.is_valid():
            Station.objects.get(pk=pk).members.remove(
                form.cleaned_data['member']
            )
            return HttpResponseRedirect(reverse("home_station",
                                        kwargs={'pk':pk},
                                    )
                            )

What I am trying to do is have the second view delete the selected member and redirect to the first view. 我想做的是让第二个视图删除所选成员并重定向到第一个视图。 But instead I'm stuck at AttributeError at /station/2/removemember , the URL corresponding to the second view, 'str' object has no attribute 'model' 但是相反,我卡在AttributeError at /station/2/removemember ,对应于第二个视图的URL, 'str' object has no attribute 'model'

This is because you specified: 这是因为您指定了:

queryset=""

In your form. 以您的形式。 Use a queryset instead (eg queryset=Member.objects.all() ). 改用查询集(例如queryset=Member.objects.all() )。

您不能有一个空的查询集,更改它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM