Предыдущее название: Невозможно импортировать 'misaka' - Django
Я следую учебному пособию о том, как построить социальную сеть.
Я сталкиваюсь с эта ошибка:
Ошибка IntegrityError в / posts / new / NOT NULL не выполнена: posts_post.user_id
Полный возврат (обратите внимание на строки, выделенные жирным шрифтом):
Вышеприведенное исключение (ограничение NOT NULL не выполнено: posts_post.user_id) было прямой причиной следующего исключения: C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ handlers \ exception.py в внутренний ответ = get_response (запрос)… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ handlers \ base.py in _get_response response = self.process_exception_by_middleware (например, запрос)… ▶ Локальный vars C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ handlers \ base.py в _get_response response = wrapped_callback (запрос, * callback_args, ** callback_kwargs)… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ views \ generic \ base.py в представлении возвращает self.dispatch (запрос, * аргументы, ** kwargs)… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ contrib \ auth \ mixins.py при отправке возвращает super (). dispatch (запрос, * аргументы, ** kwargs)… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site -packages \ django \ views \ generic \ base.py в обработчике возврата отправки (запрос, * args, ** kwargs)… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ views \ generic \ edit.py в post возвращают super (). post (запрос, * args, ** kwargs)… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ views \ generic \ edit.py в возвращаемом сообщении self.form_valid (форма)…
▶ Локальные переменные C: \ Users \ Tommaso \ Django rest framework \ Udemy Django \ simplesocial \ posts \ views.py в form_valid return super (). form_valid (форма) …
▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-pa ckages \ django \ views \ generic \ edit.py в form_valid self.object = form.save ()… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ forms \ models.py в моделях save self.instance.save ()…
▶ Локальные переменные C: \ Users \ Tommaso \ Django rest framework \ Udemy Django \ simplesocial \ posts \ models.py в save super () .save (* args, ** kwargs) …
▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ models \ base.py в save force_update = force_update, update_fields = update_fields)… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ models \ base.py в save_base force_update, используя, update_fields,… ▶ Локальные переменные C : \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ models \ base.py в _save_table result = self._do_insert (cls._base_manager, использование, поля, update_pk, raw)… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ models \ base.py в _do_insert using = using , raw = raw)… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ models \ manager.py в manager_method возвращают getattr (self.get_queryset (), name) (* args, ** kwargs)… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ models \ query.py в _insert возвращает query.get_compiler (using = using) .execute_ sql (return_id )… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ models \ sql \ compiler.py в execute_sql cursor.execute (sql, params)… ▶ Локальные переменные C : \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py при выполнении return super (). Execute (sql, params)… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py в исполнении вернуть self._execute_with_wrappers (sql, params, many = False, executor = self._execute)… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py в _execute_with_wrappers возвращает исполнителя (sql, params, many, context)… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py в _execute возвращают self.cursor.execute (sql, params)… ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ utils.py в выход поднять dj_exc_value.with_traceback (traceback) из exc_value … ▶ Локальные переменные C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py в _execute возвращают self.cursor.execute (sql, params)… ▶ Локальные переменные C : \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ sqlite3 \ base.py при выполнении возвращают Database.Cursor.execute (self, query, params)… ▶ Локальные переменные
Строки жирным шрифтом указывают на эти две части код:
1: в my_project \ posts \ views.py в form_valid:
def form_valid(self, form):
self.object = form.save(commit=False)
self.object = self.request.user
self.object.save()
return super().form_valid(form) #<--highligted line
2: в my_project \ posts \ models.py в save
def save(self, *args, **kwargs):
self.message_html = m.html(self.message)
super().save(*args, **kwargs) #<--highligted line
Эти функции запускаются, когда пользователь публикует новое сообщение в группе социальной сети.
Я использую VScode, поэтому заметил, что мой код не распознает misaka , установлен через pip и импортирован следующим образом:
import misaka as m
Ошибка импорта Pylint: невозможно импортировать 'misaka'
Я прочитал документацию по Misaka, но не могу понять что не так.
обратите внимание, что я использую Misaka v. 2.1.0, которую, по-видимому, не нужно устанавливать в INSTALLED_APPS в настройках.
Есть мысли?
Поскольку было предложено, чтобы я я пытаюсь создать объект модели Post в базу данных без установки внешнего ключа пользователя, здесь вы можете увидеть мой my_project / posts / model.py:
from django.db import models
from django.urls import reverse #vho corretto io, ersione di django cambiata
from django.conf import settings
import misaka as m
from groups.models import Group
from django.contrib.auth import get_user_model
User = get_user_model()
class Post(models.Model):
user = models.ForeignKey(User, related_name="posts", on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now=True)
message = models.TextField()
message_html = models.TextField(editable=False)
group = models.ForeignKey(Group, related_name="posts", null=True, blank=True, on_delete=models.CASCADE)
def __str__(self):
return self.message
def save(self, *args, **kwargs):
self.message_html = m.html(self.message)
super().save(*args, **kwargs)
def get_absolute_url(self):
return reverse('posts:single', kwargs={'username':self.user.username, 'pk':self.pk})
class Meta:
ordering = ['-created_at']
unique_together = ['user', 'message']