Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как определить primary key при создании экземпляра в __init__ ? [RSS Feed]

#1 Авг. 16, 2014 11:20:27

to_night
От: Киев
Зарегистрирован: 2013-12-12
Сообщения: 58
Репутация: +  1  -
Профиль   Отправить e-mail  

Как определить primary key при создании экземпляра в __init__ ?

Есть два свазанных класса. При создании экземпляра класса Foo,
создется экземпляр связанного класса Bar:

class Foo(models.Model):
    def __init__(self, *args, **kwargs):
        super(Foo, self).__init__(*args, **kwargs)
        if not self.choice_set.filter(name=u'Name'):
            self.choice_set.add(Bar(some=self,
                                    name=u'Name',))
                super(Foo, self).save()
    title = models.CharField()
class Bar(models.Model):
    some = models.ForeignKey(Foo)
    name = models.CharField()

При создании из шаблона, я получаю
ошибку: IntegrityError at /admin/polls/foo/add/
ОШИБКА: нулевое значение в колонке “foo_id” нарушает ограничение NOT NULL,
To есть pk пустое. Как мне определить primary key при инициализации
(не вручную же прописывать)?
Кстати, из консоли создается без ошибок.

Офлайн

#2 Авг. 16, 2014 12:21:23

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как определить primary key при создании экземпляра в __init__ ?

to_night
self.choice_set.add(Bar(some=self, name=u'Name',))
Нужно просто создать запись в таблице Bar
Bar.objects.create(some=self, name=u'Name')



Офлайн

#3 Авг. 16, 2014 14:17:19

to_night
От: Киев
Зарегистрирован: 2013-12-12
Сообщения: 58
Репутация: +  1  -
Профиль   Отправить e-mail  

Как определить primary key при создании экземпляра в __init__ ?

FishHook
Нужно просто создать запись в таблице Bar
Bar.objects.create(some=self, name=u'Name')
Увы, та же ошибка.

Офлайн

#4 Авг. 16, 2014 14:42:28

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как определить primary key при создании экземпляра в __init__ ?

А, ну логично.

to_night
Как мне определить primary key при инициализации
Никак, надо его знать. По какому-то критерию нужно же выбрать запись из БД.



Офлайн

  • Начало
  • » Django
  • » Как определить primary key при создании экземпляра в __init__ ?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version