2016-08-18 7 views
0

Есть ли простой способ обновить поле при получении get_or_create? У меня есть класс ItemCategory, и я хочу либо создать новую запись, либо получить уже созданную запись и обновить поле (update_date). Что я делаю:peewee get_or_create, а затем сохранить: привязка к ошибкам

item,created= ItemCategory.get_or_create(cat=cat_id,item=item_id) 
if created == True: 
    print "created" 
else: 
    item.update_date = datetime.now 
    item.somethingelse = 'aaa' 
    item.save() 

Это работает на некоторое время в моем цикле. Но после того, как 50-100 получить/создать он выходит из строя:

peewee.InterfaceError: Error binding parameter 4 - probably unsupported type.

Может быть, я должен использовать upsert(), я пытался, но не смог ничего работает. Кроме того, это не лучшее решение, так как оно заменяет всю строку, а не просто полем.

Мне нравится PeeWee, это очень легко и быстро использовать, но я не могу найти много полных примеров и Жалко

ответ

0

Новичок ошибка

item.update_date = datetime.now() 

Я не 100% уверен, что это единственный ответ. Я так много раз менял свой код, что это могло бы быть и что-то еще.

Что касается моего вопроса о create_or_update, я сделал это:

try: 
    Item.create(...) 
except IntegrityError: 
    Item.update(...) 

PeeWee действительно здорово, я удивляюсь, почему никто никогда не просил о create_or_update.

 Смежные вопросы

  • Нет связанных вопросов^_^