【问题标题】:unable to resole: type object 'Member' has no attribute '_default_manager, django 1.10无法解析:类型对象'Member'没有属性'_default_manager,django 1.10
【发布时间】:2017-06-14 01:51:32
【问题描述】:

我有以下问题: 当我尝试通过模板从我的数据库中删除成员时,我收到以下错误:

类型对象“成员”没有属性“_default_manager”

我不确定我做错了什么,因为一切似乎都尽可能正常。 下面是我的问题的模型、视图和模板 sn-p。

GENDER_CHOICES = (
    ('M', 'Male'),
    ('F', 'Female'),
)


class Member(models.Model):
    """Model for a member"""
    surname = models.CharField(max_length=255)
    names = models.CharField(max_length=255)
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
    dob = models.DateField()
    # anniversary = models.ForeignKey(Anniversary)
    email = models.EmailField()
    phone = PhoneNumberField(help_text='Please, use this format +3232')
    address = models.CharField(max_length=255)
    suburb = models.CharField(max_length=255, choices=Suburbs_list, default=Suburbs_list[0][0])
    province = models.CharField(max_length=255, choices=Provinces_List, default=Provinces_List[8][1])
    country = models.CharField(max_length=255, default='Unite Kingdom')
    previous_church = models.CharField(max_length=255)
    added_date = models.DateField(default=datetime.date.today)

    def __str__(self):
        return self.surname

    class Meta:
        ordering = ['-suburb', 'province']

还有我的删除视图:

class DeleteMember(LoginRequiredMixin, generic.DeleteView):
"""
This view will be responsible of deleting an member
"""
model = Member
template_name = 'members/delete_member.html'
success_url = reverse_lazy('website:home')

还有我的表格:

class MemberForm(forms.ModelForm):
dob = forms.DateField(widget=extras.SelectDateWidget, label='Date of Birth')
phone = forms.CharField(label='Phone Number',
            widget=forms.TextInput(attrs={'placeholder': '+41524242424'}))

class Meta:
    model = Member
    exclude = ['added_date']
    error_messages = {
        'phone': {
            'max_length': _("Please use this format +41524242424 ."),
            }
    }

还有我的删除网址:

url(r'^delete-member/(?P<pk>\d+)/delete/$', DeleteMember.as_view(),
        name='delete_member'),

在模板中:

<a class="btn btn-danger btn-edit" role="button" href="{% url "website:delete_member" pk=member.id %}">Delete</a>

还有我的回溯:

Internal Server Error: /delete-member/1/delete/
Traceback (most recent call last):
  File "/project/lib/python3.5/site-packages/django/core/handlers/exception.py", line 39, in inner
    response = get_response(request)
  File "/project/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/project/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/project/lib/python3.5/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/project/lib/python3.5/site-packages/django/contrib/auth/mixins.py", line 56, in dispatch
    return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
  File "/project/lib/python3.5/site-packages/django/views/generic/base.py", line 88, in dispatch
    return handler(request, *args, **kwargs)
  File "/project/lib/python3.5/site-packages/django/views/generic/detail.py", line 115, in get
    self.object = self.get_object()
  File "/project/lib/python3.5/site-packages/django/views/generic/detail.py", line 32, in get_object
    queryset = self.get_queryset()
  File "/project/lib/python3.5/site-packages/django/views/generic/detail.py", line 68, in get_queryset
    return self.model._default_manager.all()
AttributeError: type object 'Member' has no attribute '_default_manager'

我将不胜感激。

【问题讨论】:

  • 你能分享你错误的回溯吗?
  • @Wilfried 现在提供了回溯
  • 也许问题出在你LoginRequiredMixin。您需要定义一些属性,例如login_urlredirect_field_name。你可以试试不用这个mixin,看看是不是它的问题
  • @Wilfried 即使没有 mixin 同样的问题
  • 也许这似乎是一个显而易见的问题,但您确定您正确导入了Member 模型吗?

标签: django django-forms django-templates django-views


【解决方案1】:

我发现了这个问题,由于某种原因,我将我的模型成员和视图成员都称为,它是冲突的。所以我只是重命名了视图。

【讨论】:

  • 你是救生员。在Django==2.0.2 上有同样的问题。深入互联网寻找这个。谢谢猫
  • 也一样。我正在像这样导入我的模型:.models import * pycharm 在我阅读这篇文章之前没有显示任何错误。谢谢。
  • 我有一个名为“MyMenu”的基于类的视图和另一个名为“Menu”的视图,我正在处理“MyMenu”视图,但出现 405 错误。今天我读了这篇文章,我有一个名为“Menu”的模型,所以我将视图更改为“Menu”,它起作用了。
【解决方案2】:

当 django 指向与模型不同的对象时会发生此错误,因此只需检查序列化程序或信号或您在视图中导入的任何内容。您会发现另一个与您的模型同名的对象

【讨论】:

    【解决方案3】:

    在我的情况下,错误是由于之前的复制和粘贴,在视图中我为变量模型传递了一个表单。

    class ProductCommentDelete(CommentOwnerMixin, DeleteView):
        model = ProductComment #not ProductCommentForm
        template_name = 'comments/product-comment-delete.html'
        success_url = reverse_lazy('home')
    

    希望对遇到此错误的人有所帮助。

    【讨论】:

    • 这如何回答这个问题?
    猜你喜欢
    • 2021-08-01
    • 2016-04-23
    • 2014-02-23
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 2020-01-12
    相关资源
    最近更新 更多