Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Alycia
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 30
1

Ошибка "Сбой ограничения NOT NULL" при добавлении поста

27.03.2019, 12:20. Просмотров 1114. Ответов 7

На странице юзера есть форма для написания поста, и по идее этот пост должен отображаться только на странице автора, но когда пытаюсь запостить написанный пост, то возникает ошибка ( IntegrityError at /profile/2/ NOT NULL constraint failed: account_post.post_id ).
Traceback ругается на строку
Python
1
 new_post.save()
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#models.py
 
 
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
 
    def __str__(self):
        return self.user.username
 
 
class Post(models.Model):
    post = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='posts')
    text = models.TextField()
    published = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
 
 
#views.py
def index(request, pk):
    profile = get_object_or_404(Profile, pk=pk)
 
    posts = profile.posts.all()
    new_post = None
    if request.method == 'POST':
        form = PostForm(data=request.POST)
        if form.is_valid():
            new_post = form.save(commit=False)
            new_post.author = request.user
            new_post.save()
    else:
        form = PostForm()
 
    return render(request, 'account/index.html', {'profile': profile,
                                                  'form': form,
                                                  'new_post': new_post })
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2019, 12:20
Ответы с готовыми решениями:

Ошибка при добавлении записи в таблицу БД "Could not convert variant of type "NULL" into type "OleStr"
Здравствуйте. При работе программы вылетает ошибка "Could not convert variant of type "NULL"...

Почему при добавлении в БД строки "ИП" букву "И" заносит как "?" (utf-8)?
Доброго времени суток! Никто не сталкивался с подобной задачей? Добавляю большую "И", а ее...

Ошибка при работе со списком: "Сбой при преобразовании в COFF: Файл недопустим или поврежден"
struct stud { int data; stud *prev; // Указатель на предыдущую запись stud *next; //...

Сохранение в БД. (DataAdapter и параметры. Ошибка "Нарушение "IX_Countries" ограничения UNIQUE KEY.")
Всем привет! Пишу курсач и самостоятельно разбираюсь в ado.net. Возникла проблема. В БД есть...

7
m0nte-cr1st0
867 / 451 / 191
Регистрация: 15.01.2019
Сообщений: 1,764
Записей в блоге: 1
27.03.2019, 12:34 2
Alycia, а где Вы определяете поля "text" и "post"
0
Alycia
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 30
27.03.2019, 12:39  [ТС] 3
m0nte-cr1st0, text в forms.py,
поле post я определяю во вьюхе через related_name
0
m0nte-cr1st0
867 / 451 / 191
Регистрация: 15.01.2019
Сообщений: 1,764
Записей в блоге: 1
27.03.2019, 12:55 4
Цитата Сообщение от Alycia Посмотреть сообщение
поле post я определяю во вьюхе через related_name
на какой строке? а то не вижу.

Добавлено через 3 минуты
Alycia, пропишите print(new_post.post) в блоке form.is_valid и посмотрите в консоль.
0
Alycia
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 30
27.03.2019, 13:30  [ТС] 5
m0nte-cr1st0, если я правильно понимаю, то на 22 строке я и определяю поле post, но судя по всему это не так

Добавлено через 34 минуты
m0nte-cr1st0,
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
пропишите print(new_post.post) в блоке form.is_valid и посмотрите в консоль.
Это будет сложно, потому что ставила эксперименты и теперь вообще страница профиля не открывается (ошибка 404)
0
m0nte-cr1st0
867 / 451 / 191
Регистрация: 15.01.2019
Сообщений: 1,764
Записей в блоге: 1
27.03.2019, 13:32 6
Цитата Сообщение от Alycia Посмотреть сообщение
Это будет сложно, потому что ставила эксперименты и теперь вообще страница профиля не открывается (ошибка 404)
какой трейсбек ошибки?
от принта не могло ничего нарушиться, если вы его вставили туда, куда надо.
покажите изменённый код.
0
Alycia
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 30
27.03.2019, 13:37  [ТС] 7
m0nte-cr1st0, выдает ошибку Post has no post. Это с принтом в блоке валидации

Добавлено через 4 минуты
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
print(new_post.post)
а почему именно post, а не posts. Если ставить posts, то все работает до save()
Python
1
2
3
4
5
6
7
8
9
10
posts = profile.posts.all()
    new_post = None
    if request.method == 'POST':
        form = PostForm(data=request.POST)
        if form.is_valid():
            new_post = form.save(commit=False)
            new_post.author = request.user
            new_post.posts = posts
            print(new_post.posts)
            new_post.save()
0
m0nte-cr1st0
867 / 451 / 191
Регистрация: 15.01.2019
Сообщений: 1,764
Записей в блоге: 1
27.03.2019, 14:11 8
Лучший ответ Сообщение было отмечено Alycia как решение

Решение

Цитата Сообщение от Alycia Посмотреть сообщение
Если ставить posts, то все работает до save()
у Вас save и вылетает, потому что не все поля определены.
вообще пропишите `print(new_post), print(new_post.text), print(new_post.posts), print(new_post.post)` перед сейвом и увидите, что у вас там передаётся и где ошибка падает.
1
27.03.2019, 14:11
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2019, 14:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Из-за чего появилась ошибка "сбой при преобразовании в COFF"?
Ошибка 1 error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден Как...

При выключении компьютера ошибка - "Сбой приложения dwwin.exe"
Виндовоз слетает конкретно... Сначала он безпричинно расширял файл подкачки на диске, где я его...

Ошибка "Сбой при преобразовании в COFF: файл недопустим или поврежден"
#include <iostream> #include <clocale> int const mm = 50; int const nn = 50; float A; int...

Ошибка при добавлении базы данных (при коннектинге "Add Connection")
Здравствуйте, возникла проблема при коннектинге базы данных. После того как хочу создать новую базу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.