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

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

25.10.2019, 13:26. Показов 12344. Ответов 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
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 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
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru