У меня есть модель, как это:Peewee: create_or_get() ошибка в модели с CompositeKey
class ProductOrderItem(BaseModel):
prodorder = peewee.ForeignKeyField(modprodord.ProductOrder, related_name='items')
cid = peewee.IntegerField(null=False)
class Meta:
db_table = 'TBWOHPARGDET'
primary_key = CompositeKey('prodorder','cid')
Цель на это, чтобы построить таблицу с чем-то вроде этого:
|ID_ORDER|ID_ORDERLINE|
| 1| 1|
| 1| 2|
| 1| 3|
| 2| 1|
Appart, в моем слое BO, я хочу определить, был ли этот объект ранее создан или нет. Поэтому я использовал create_or_get(method)
просто получить создал переменной или lineOrder, который соответствует PK полях -I среднее значение, объект, который был найден в БД с помощью: ме-
for idx,x in enumerate(collection):
lineOrder, created = ProductOrderItem.create_or_get(order=orderObj,orderline=idx,[rest_of_fields])
if(created): # this is when the object was created
else: # this is when the object with those PK's was found in database
# this is where I want to add the rest of fields, in other this linea I have the object retrieved from the DB
lineOrder.field1 = "empty"
lineOrder.save()
Но когда я отладки приложение, которое я обнаружил, что независимо от того, сколько итераций у меня есть, create_or_Get()
метод всегда возвращает PK первой строки.
Почему такое поведение?
решаемые @coleifer – MigRome