1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267

Null value in column "user_id" violates not-null constraint save()

25.10.2019, 13:26. Показов 12581. Ответов 30

Студворк — интернет-сервис помощи студентам
Хочу сделать импорт данных из файла Excel. все данные берутся нормально но он выдает ошибку, сам файл в котором лежит код вызывается по команде
сам пользуюсь базой данных postgresql
в чем ошибка и как тут привязан user_id понять не могу.
сама таблица называется channel_card куда и отправляются данные
вот ошибка
"django.db.utils.IntegrityError: null value in column "user_id" violates not-null constraint
DETAIL: Failing row contains (1011, 2019-10-25 10:09:22.909467+00, 1, 807, {"city": "Город", "in_use": false, "number": "25026500020631", ..., 41, null).
"
вод код
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
import openpyxl
from django.core.management import BaseCommand
from modules.channel.models import  Card
 
 
class Command(BaseCommand):
    def handle(self, *args, **options):
        path = "/home/roma/workspase/channels/modules/channel/static/channel/Excel/1.xlsx"  # имя файла
        wb = openpyxl.load_workbook(path)
        ws1=wb["НОВОЕ"]
        m_row = ws1.max_row
        for i in range(2, m_row + 1):
            id_card = ws1.cell(row=i, column=1).value# В column= подставляем номер нужной колонки
            card = ws1.cell(row=i, column=4).value
            cam_module = ws1.cell(row=i, column=6).value
            city = ws1.cell(row=i, column=8).value
            encoding = ws1.cell(row=i, column=9).value
            location = ws1.cell(row=i, column=10).value
            comment = ws1.cell(row=i, column=13).value
            price_and_conditions = ws1.cell(row=i, column=16).value
            id_card = int(id_card)
            card_update = Card.objects.get(id=id_card)
            card_update.card = card
            card_update.cam_module = cam_module
            card_update.city_id = city
            card_update.encoding_id = encoding
            card_update.location = location
            card_update.comment = comment
            card_update.price_and_conditions = price_and_conditions
            card_update.save()
            print(card_update.id, card_update.card,)
сама таблица
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
36
37
38
39
40
41
@attach_main_log
class Card(LogModelNameMixin, models.Model):
    """
    Карты
    """
    source = models.ManyToManyField('channel.Source', verbose_name='Источники', related_name='card',
                                    blank=True, limit_choices_to={'type': Source.SOURCE_TYPE_SPUTNIK})
    city = models.ForeignKey('core.City', verbose_name='Город', related_name='card',
                             limit_choices_to={'is_active': True, 'sputnik': True})
    number = models.CharField('Номер', max_length=45,)
    encoding = models.ForeignKey('channel.CardEncoding', verbose_name='Кодировка', related_name='card',
                                 limit_choices_to={'in_use': True})
    status = models.ForeignKey('channel.CardStatus', verbose_name='Статус', related_name='card',
                               limit_choices_to={'in_use': True})
    cam_module = models.TextField('CAM Модуль', blank=True, null=True)
    comment = models.TextField('Назначение', blank=True, null=True)
    in_use = models.BooleanField('В работе', default=True, db_index=True)
    card_return = models.BooleanField('Возврат карты', default=True, db_index=True)
    module_return = models.BooleanField('Возврат модуля', default=True, db_index=True)
    location = models.TextField('Местоположение', default='', blank=True)
    price_and_conditions = models.TextField('Стоимость и условия', default='', blank=True)
    activation = models.BooleanField('Активация', default=True, db_index=True)
    activation_date = models.DateField('Дата активации',auto_now_add=True, null=True)
    date_of_receipt = models.DateField('Дата получения', auto_now_add=True, null=True)
    broadcaster = models.CharField('Вещатель', max_length=30, default='', blank=True)
 
    history = GenericRelation(History)
 
    objects = models.Manager.from_queryset(CardQuerySet)()
 
    class Meta:
        verbose_name = 'Карта'
        verbose_name_plural = 'Карты'
        permissions = (
            ('p_card_view', 'Просмотр карт доступа'),
            ('p_card_add', 'Добавлять карту доступа'),
            ('p_card_edit', 'Редактировать карту доступа')
        )
 
    def __str__(self):
        return self.number
вот лог из терминала
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
~/workspase/channels$ ./manage.py export_from_excel
851 31026500020781
Traceback (most recent call last):
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
psycopg2.IntegrityError: null value in column "user_id" violates not-null constraint
DETAIL:  Failing row contains (1011, 2019-10-25 10:09:22.909467+00, 1, 807, {"city": "Город", "in_use": false, "number": "25026500020631", ..., 41, null).
 
 
The above exception was the direct cause of the following exception:
 
Traceback (most recent call last):
  File "./manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/home/roma/workspase/channels/modules/channel/management/commands/export_from_excel.py", line 31, in handle
    card_update.save()
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/db/models/base.py", line 808, in save
    force_update=force_update, update_fields=update_fields)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/db/models/base.py", line 833, in save_base
    update_fields=update_fields,
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/dispatch/dispatcher.py", line 193, in send
    for receiver in self._live_receivers(sender)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/dispatch/dispatcher.py", line 193, in <listcomp>
    for receiver in self._live_receivers(sender)
  File "/home/roma/workspase/channels/modules/channel/signal_receivers.py", line 72, in card_history_update
    history.save()
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/db/models/base.py", line 808, in save
    force_update=force_update, update_fields=update_fields)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/db/models/base.py", line 838, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/db/models/base.py", line 924, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/db/models/base.py", line 963, in _do_insert
    using=using, raw=raw)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/db/models/query.py", line 1076, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1112, in execute_sql
    cursor.execute(sql, params)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/db/backends/utils.py", line 79, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/raven/contrib/django/client.py", line 127, in execute
    return real_execute(self, sql, params)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/cacheops/transaction.py", line 99, in execute
    result = self._no_monkey.execute(self, sql, params)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/utils/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/home/roma/workspase/venvs/channels/lib/python3.6/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
django.db.utils.IntegrityError: null value in column "user_id" violates not-null constraint
DETAIL:  Failing row contains (1011, 2019-10-25 10:09:22.909467+00, 1, 807, {"city": "Город", "in_use": false, "number": "25026500020631", ..., 41, null).
Миниатюры
Null value in column "user_id" violates not-null constraint save()   Null value in column "user_id" violates not-null constraint save()  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2019, 13:26
Ответы с готовыми решениями:

Ошибка «NOT NULL constraint failed: mainapp_cartproduct.user_id»?
Всем привет! После того как добавил на сайт регистрацию стала появляться ошибка при добавлении товара в корзину IntegrityError at...

UPDATE SELECT, ERROR: null value in column violates not-null constraint
Здравствуйте. Две таблицы, из одной значением integer модифицируется int другой таблицы. В таблице-приёмнике ограничение NOT NULL. ...

Проблема: Integrity constraint violation: 1048 Column 'any' cannot be null
Добрый день! Изучаю Zend и выполняя одно задание столкнулся со следующей проблемой: Имеется форма в которой есть два поля -...

30
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
25.10.2019, 15:41
Студворк — интернет-сервис помощи студентам
Lastik228, о боже...
ты с консоли не можешь приконннектиться к базе, что ли?..
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
25.10.2019, 15:53  [ТС]
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
консоли не можешь приконннектиться к базе, что ли
могу но не знаю как показать структуру базы через терминал
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
25.10.2019, 16:33
Лучший ответ Сообщение было отмечено Lastik228 как решение

Решение

Lastik228, скрин таблицы сделать будет достаточно
1
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
28.10.2019, 07:07  [ТС]
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
скрин таблицы сделать будет достаточно
извини что спустя 2 дня ответил. выходные были
Миниатюры
Null value in column "user_id" violates not-null constraint save()  
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
28.10.2019, 08:55  [ТС]
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
скрин таблицы сделать будет достаточно
кр я нашел проблему. спасибо большое за помощь

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@receiver(pre_save, sender=Card)
def card_history_update(sender, instance, **kwargs):
    """
    Логирование изменений по картам доступа
    """
    if instance.id is not None:
        data = {
            'city': instance.city.name,
            'number': instance.number,
            'encoding': instance.encoding.title,
            'status': instance.status.title,
            'cam_module': instance.cam_module,
            'comment': instance.comment,
            'in_use': instance.in_use
        }
        history_prev = instance.history.all().order_by('-date').first()
        if history_prev is None or data != history_prev.data:
            history = History(content_object=instance, user=CuserMiddleware.get_user(), action=History.ACTION_UPDATE)
            history.data = data
            history.save()
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7393 / 4820 / 1246
Регистрация: 30.03.2015
Сообщений: 13,703
Записей в блоге: 29
28.10.2019, 09:00
Lastik228, так в чем она была?
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
28.10.2019, 09:05  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
так в чем она была?
ресивер записывает все изменения в таблице Card в историю. я же вызываю функцию и произвожу изменения грубо говоря не зарегистрированным пользователем. И вот из за этого и вся херня.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7393 / 4820 / 1246
Регистрация: 30.03.2015
Сообщений: 13,703
Записей в блоге: 29
28.10.2019, 09:07
Лучший ответ Сообщение было отмечено Lastik228 как решение

Решение

Lastik228, понял, я сразу именно такое предположение и высказал. Хорошо что разобрались
1
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
28.10.2019, 10:39  [ТС]
так теперь как все эту фигню отключить для тех кто не знает.
дергаем те данные которые надо отключить
Python
1
2
3
from django.db.models.signals import pre_save
from modules.channel.models import  Card
from modules.channel.signal_receivers import card_history_update
потом пишем уже данный пример
где pre_save это то через что идут данные в ресивер(может быть и post_save)
card_history_update это та def которую надо отключить на время выполнения данного кода
sender это та таблица которая подвергается изменениям
Python
1
2
3
class Command(BaseCommand):
    def handle(self, *args, **options):
        pre_save.disconnect(card_history_update, sender=Card)
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
28.10.2019, 10:52
Цитата Сообщение от Lastik228 Посмотреть сообщение
ресивер записывает все изменения в таблице Card в историю. я же вызываю функцию и произвожу изменения грубо говоря не зарегистрированным пользователем. И вот из за этого и вся херня.
Вот здесь, null возвращается, я так понимаю.

CuserMiddleware.get_user()
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
28.10.2019, 12:03  [ТС]
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
Вот здесь, null возвращается, я так понимаю.
ага
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.10.2019, 12:03

Cannot insert the value NULL into column 'Id', table '.dbo.Records';column does not allow nulls
Уважаемые, т.к. мой мозг не способен понять, почему вылазит данное исключение, когда я добавляю строку и в ней поле Id - не NULL, надеюсь...

unique constraint и null
Я так понимаю, что в таблицу с полем типа: fieldname varchar(50) NULL UNIQUE можно добавлять строку с fieldname=NULL, но только...

NOT NULL constraint failed
Здравствуйте. Встал вопрос, при попытки сохранить в БД. Выдает ошибку NOT NULL constraint failed: scrapping_vacancy.language_id ...

[Hibernate] Удалить сущность с null constraint
БД выглядит следующим образом(без roles и user_roles): В users_playlists композитный PK. Хочу удалить объект типа Playlist, но...

Ошибка sqlite: NOT NULL constraint failed
В учебных целях передо мной стояла такая задача:Сделать возможность добавлять пост в БД и коммент для каждого поста. Выводить все через...


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

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

Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru