Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/55: Рейтинг темы: голосов - 55, средняя оценка - 4.96
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267

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

25.10.2019, 13:26. Показов 12176. Ответов 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
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 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
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru