Аватар для Alycia
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 35

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

27.03.2019, 12:20. Показов 2836. Ответов 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)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2019, 12:20
Ответы с готовыми решениями:

Непонятная ошибка (разрушительный сбой) при добавлении в ListView
хочу изменить содержание элемента по индексу в listview но выводит ошибку wtf?? изза чего это???

При добавлении метки во время редактирования поста грузится система
Странная проблема на wordpress-сайте. Когда при добавлении/редактировании поста в вордпрессе устанавливаю курсор в строку меток, чтобы...

Можно ли поднять пост (обновить дату публикации поста) при добавлении комментария
У меня есть страница http://vip-ref.ru/ Справа простым виджетом (новые посты) выводятся рекламные посты пользователей. Сверху...

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

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

Добавлено через 34 минуты
m0nte-cr1st0,
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
пропишите print(new_post.post) в блоке form.is_valid и посмотрите в консоль.
Это будет сложно, потому что ставила эксперименты и теперь вообще страница профиля не открывается (ошибка 404)
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
27.03.2019, 13:32
Цитата Сообщение от Alycia Посмотреть сообщение
Это будет сложно, потому что ставила эксперименты и теперь вообще страница профиля не открывается (ошибка 404)
какой трейсбек ошибки?
от принта не могло ничего нарушиться, если вы его вставили туда, куда надо.
покажите изменённый код.
0
 Аватар для Alycia
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 35
27.03.2019, 13:37  [ТС]
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
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
27.03.2019, 14:11
Лучший ответ Сообщение было отмечено Alycia как решение

Решение

Цитата Сообщение от Alycia Посмотреть сообщение
Если ставить posts, то все работает до save()
у Вас save и вылетает, потому что не все поля определены.
вообще пропишите `print(new_post), print(new_post.text), print(new_post.posts), print(new_post.post)` перед сейвом и увидите, что у вас там передаётся и где ошибка падает.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2019, 14:11
Помогаю со студенческими работами здесь

EF и ID = null при добавлении записи после перенесения БД на другой хостинг
После перенесения БД на другой хостинг через программу "Импорт и экспорт данных" при добавлении новых записей и сохранении дбконекста...

При добавлении одного элемента в список head и tail остаются NULL
LIST *head=NULL,*tail=NULL; void add(LIST * l,LIST * head,LIST * tail) { l->next=l->prev=NULL; if (head==NULL) head=tail=l; ...

При добавлении пользователя в БД для необязательных полей нужно передать NULL, а не ''
Код добавления в БД пользователя: $result_query_insert = $mysqli->query("INSERT INTO `users` (first_name, last_name, email, password,...

Замена NULL на значение по умолчанию при добавлении новой строки в DataGridView с заданным DataSource
Доброго времени суток! Для DataGridView в качестве источника данных задана DataTable заполняемая из БД. В БД для некоторых столбцов...

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


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

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

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru