Ошибка Django: объект «NoneType» не имеет атрибута «_meta» - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь создать страницу сообщества, в которой есть форма для публикации нового сообщения и список всех предыдущих сообщений, аналогично Facebook.Но теперь я продолжаю получать сообщение об ошибке

'NoneType' object has no attribute '_meta'

Это моя функция просмотра:

def community(request):
    if redirect_if_false_choice(request):
        return redirect_if_false_choice(request)
    posts = CommunityPost.objects.filter(public=True).order_by('date_posted')
    form = PostForm(request.POST or None)
    if str(request.method) == 'GET':
       return render(request, 'officer/community.html', {'posts': posts, 'form': form})
    if form.is_valid():
       form.save()
       return redirect('community')

И это форма:

class PostForm(forms.ModelForm):
   class Meta:
        model = CommunityPost
        fields = ('content', )
        widgets = {
            'content': forms.Textarea(attrs={'rows': 4, 'placeholder': 
            "What's going on?"})
        }

Вся трассировка стека:

Internal Server Error: /officer/community/
Traceback (most recent call last):
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/security_officer_wanted/officer/views.py", line 114, in community
    return render(request, 'officer/community.html', {'posts': posts, 'form': form})
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/shortcuts.py", line 36, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/base.py", line 171, in render
    return self._render(context)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/base.py", line 163, in _render
    return self.nodelist.render(context)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/base.py", line 937, in render
    bit = node.render_annotated(context)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/base.py", line 163, in _render
    return self.nodelist.render(context)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/base.py", line 937, in render
    bit = node.render_annotated(context)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/base.py", line 937, in render
    bit = node.render_annotated(context)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/defaulttags.py", line 209, in render
    nodelist.append(node.render_annotated(context))
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/django/template/library.py", line 192, in render
    output = self.func(*resolved_args, **resolved_kwargs)
  File "/home/christian/PycharmProjects/django-securityofficerwanted/venv/lib/python3.6/site-packages/image_cropping/templatetags/cropping.py", line 18, in cropped_thumbnail
    ratiofield = instance._meta.get_field(ratiofieldname)
AttributeError: 'NoneType' object has no attribute '_meta'
[04/Jul/2019 06:18:57] "GET /officer/community/ HTTP/1.1" 500 169040

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Я понял, ошибка была в том, что сайт не знает, кто опубликовал сообщение, я исправил это, и теперь оно работает. (Шаблон вызывает функцию в модели CommunityPost, которая должна возвращать пользователя, который опубликовал сообщение. Но поскольку никто не опубликовал его, он не вернул ничего.)

0 голосов
/ 04 июля 2019

Невозможно быть уверенным в предоставленной вами информации.

В сообщаемой вам ошибке, без сомнения, упоминается номер строки, который был бы очень информативным, и, взглянув на него, вы почти наверняка угадали, что это значит. Вероятно, строка с сообщением об ошибке находится внутри библиотек Django, но вы можете проследить за стеком в любом разумном отладчике до того момента, когда ваш код вызывает Django и почесывает там голову.

При этом была отмечена одна очевидная проблема, заключающаяся в том, что может быть связано с тем, что вы испытываете, это то, что ваш вышеупомянутый мета-класс не является членом класса PostForm. См:

https://docs.djangoproject.com/en/2.2/topics/forms/modelforms/

И попробуйте, например:

class PostForm(forms.ModelForm):
    class Meta:
        model = CommunityPost
        fields = ('content', )
        widgets = {
            'content': forms.Textarea(attrs={'rows': 4, 'placeholder': "What's going on?"})
        }

Но мне кажется, что это может быть ошибкой форматирования в вашем посте здесь. Совершенно не уверен. Все, что я могу сказать, это выглядит неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...