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

标签 python django

由于默认的 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/

相关文章:

python - 无法在 Linux 上 pip 安装 psycopg2

python - pyarrow 可以将多个 Parquet 文件写入 fastparquet 的 file_scheme ='hive' 选项之类的文件夹吗?

django - django.contrib.auth.user 的唯一电子邮件约束

python - Django 模型和多语言网站

使用 django-nose 的 Django 负载测试装置

python - 在 django 中对列表的每个元素调用方法的快速策略是什么

python - 条形图 xtick 标签的位置有不规则的空间

java - Python JMS Stomp 客户端和 Apache ActiveMQ - 监听器不起作用

python - Django Python : adding custom permissions to specific users

python - 我该如何编写这个 django 查询?