On Tuesday, January 6, 2015 11:09:09 AM UTC-3, Mariano Ramon wrote:
>
>
>
> On Tuesday, January 6, 2015 5:05:04 AM UTC-3, Cédric Krier wrote:
>>
>> On 05 Jan 21:58, Sergi Almacellas Abellana wrote:
>> >
>> >
>> > On 5 de gener de 2015 21:18:45 CET, Mariano Ramon <[email protected]>
>> wrote:
>> > >Which is the function that runs on creations of any model.
>> >
>> > The create function of a model is called every time you create some
>> records of the model.
>> >
>> > The signature is the following:
>> >
>> > def create(cls, vlist)
>> >
>> > where vlist is a list of dictionaries, where each dictionary a key
>> value for each field of the model. The key is the name of the field, and
>> the value is the value used to create the record.
>>
>> But this method should no more be recommended, the right one is: save()
>> on instance.
>>
>>
>
> Actually both answers are useful. I need a record to be saved with default
> values on the creation of another. Is there any other better way to hook on
> this event?, and if I have to use create.. how do I it without interfering
> with the creation of the parent record?
>
>
>
>> > And how can
>> > >I
>> > >instantiate and assign a different but related model to one of the
>> > >fields
>> > >of the first?
>> >
>> > Don't understand the question. Can you put clarify or put an example?
>>
>> I guess he means putting a value of a Many2One field.
>>
>> record = MyModel()
>> target = MyTarget()
>> target.save()
>> record.target = target
>> record.save()
>>
>>
>
> yes this is what I would need to do when updating or creating "record"
>
>
> would this be correct?:
>
>
>
> class MyModel(ModelSQL, ModelView):
> 'MyModel'
> __name__ = 'mymodel.mymodel'
>
> @classmethod
> def create(cls, vlist):
> super(MyModel, cls).create(vlist)
> target = MyTarget()
>
> #
> # set desired values here
> #
>
> target.save()
> self.target = target
> self.save()
>
>
>
>
> thanks!
> Mariano
>
CLARIFICATION: here is the actual class:
class CustomParty(ModelSQL, ModelView):
'Party'
__name__ = 'party.party'
@classmethod
def create(cls, vlist):
records = super(CustomParty, cls).create(vlist)
target = CustomPatient()
target.name = records[0]
target.save()
but this gives me
assert self.name is not None
AssertionError
printing records[0]
gives me <class 'trytond.pool.party.party'>
the question would be how do I get the instances of the party that was just
created? I have the impression that I'm missing some basic python stuff
here, even some basic programming concept maybe.. sorry about that.