С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для Alycia
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 35

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

27.03.2019, 12:20. Показов 2745. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru