gpt4 book ai didi

python - “组”对象没有属性 'user_set'

转载 作者:行者123 更新时间:2023-12-02 09:45:55 24 4
gpt4 key购买 nike

由于默认的 django 管理组表单没有用于选择组中用户的字段。我写下了一些在网上添加所选用户字段的代码。一切正常。在我尝试保存创建的组表单之前,我收到此错误“组”对象没有属性“user_set”

class GroupAdminForm(forms.ModelForm):
class Meta:
model=group
exclude=[]
users=forms.ModelMultipleChoiceField(queryset=User,objects.all(),widget=FilteredSelectMultiple('users',False),required=False)
def __int__(self,*args,**kwargs):
super(GroupAdminForm,self).__int__(*args,**kwargs)
if self.instance.pk:
self.fields['users'].initial=self.instance.user_set.all()
def save_m2m(self):
self.instance.user_set.set(self.cleaned_data['users'])
def save(self,*args,*kwargs):
instance= super(GroupAdminForm,self).save()
self.save_m2m()
return instance

我收到此错误“Group”对象没有属性“user_set”。我不知道如何解决这个问题。请帮忙 。我是 django 中的海军。请帮助帮助

最佳答案

在遵循诸如 this one, covering how to add the ability to edit groups in the admin section 之类的答案后,我对此犯了个人错误。是因为我的 CustomUserAdmin(UserAdmin) 中有一个“add_form”引用了组管理表单。

为了扩展,我的原始代码如下所示:

class CustomUserAdmin(UserAdmin):
add_form = GroupAdmin # this right here was the culprit
model = CustomUser
ordering = ('date_published',)
...

我发现GroupAdmin表单,它是:

class GroupAdmin(admin.ModelAdmin):
form = GroupAdminForm

def save_model(self, request, obj, form, change):
super(GroupAdmin, self).save_model(request, obj, form, change)
if 'users' in form.cleaned_data:
form.instance.user_set.set(form.cleaned_data['users'])

应该只附加到“组”模型,而不是用户模型。因此,我不断收到上述错误。

只需删除问题代码并遵循 Ekad 的“更新”答案即可解决我的问题。

对于像我这样的初学者,我可以通过在 Django 中设置断点来调试它,我发现 self.instance 是一个“{Group}”。那么,为什么我应该将与组相关的表单添加到我的扩展用户模型中呢?

这对于更有经验的开发人员来说当然是基础,但对我来说,很难捕获错误,从而产生了这个错误。

关于python - “组”对象没有属性 'user_set',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52575319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com