Thanks Simon. That's exactly what I'm looking for. Wish they had piggy
backed in the established F pattern though.  It's quite verbose just to
access the field on either model.

r_id would just be a pk, usually from a fk on another model that I do need
to fetch.


Best,

Casey




Le jeu. 21 mars 2019 5:07 p.m., Simon Charette <[email protected]> a
écrit :

> I'm not sure where r_id comes from but Model.save usually deals with any
> expression correctly
> so you could try using a subquery assignment and see if it works.
>
> e.g.
>
> entry = Entry.objects.create(
>     start=Subquery(
>         Recurrence.objects.filter(pk=r_id).values('start_time')[:1]
>     )
> )
>
> Note that accessing entry.start right after creation might still return
> the Subquery instance
> instead of the created value. This is caused by some backends not
> supporting the
> RETURNING clause. There's an open ticket about making such attributes
> available
> immediately on backend supporting RETURNING but it was still missing
> consensus about
> what to do on other backends. If I remember correctly the two alternatives
> were to defer the
> field or perform an immediate SELECT.
>
> Cheers,
> Simon
>
> Le jeudi 21 mars 2019 13:06:04 UTC-4, Dylan Young a écrit :
>>
>> For example using made-up syntax:
>>
>> Entry.objects.create(start=F(Recurrence.objects.filter(pk=r_id),
>> 'start_time'))
>>
>> Note that we can't use `get` since the whole point is to avoid all the
>> useless round-trips to the DB.
>>
>> Best,
>>
>> Casey
>>
>> On Thu, 21 Mar 2019 at 13:18, Dylan Young <[email protected]> wrote:
>>
>>> It's not a recalculation. It's instantiation.
>>>
>>> Instance data diverges from the factory data and needs to be
>>> independently editable.
>>>
>>> Best,
>>>
>>> Casey
>>>
>>> Le jeu. 21 mars 2019 2:52 a.m., Derek <[email protected]> a écrit :
>>>
>>>> Permanently storing data that can be recalculated from existing data is
>>>> a practice specific to the needs of particular applications.
>>>>
>>>> Have you perhaps considered making use of the "view" table
>>>> functionality available in most databases?
>>>>
>>>> For example, in PostgreSQL you can create a materialized view which
>>>> "caches the result of a complex expensive query and then allow you to
>>>> refresh this result periodically." - see
>>>> http://www.postgresqltutorial.com/postgresql-materialized-views/
>>>>
>>>>
>>>> On Tuesday, 19 March 2019 17:34:11 UTC+2, Dylan Young wrote:
>>>>>
>>>>> Hey all:
>>>>>
>>>>> I often find myself fetching data from models in the database only to
>>>>> run a few trivial calculations and store the info in a different model.
>>>>>
>>>>> Is there an established ORM pattern for directly creating objects in
>>>>> the DB based on the fields of other models?
>>>>>
>>>>> Sorry if this is obvious, but I couldn't find much on this in my web
>>>>> searching.
>>>>>
>>>>>
>>>>> Best,
>>>>>
>>>>> Casey
>>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Django users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at https://groups.google.com/group/django-users.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/django-users/a1c55adc-c5fa-465c-8740-3a741bc22686%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/django-users/a1c55adc-c5fa-465c-8740-3a741bc22686%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/7b954a7d-e893-4459-8d75-e7cc1a411e1f%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/7b954a7d-e893-4459-8d75-e7cc1a411e1f%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAPGJNu5OE2LddpZ7fnp6mg8vUT-8s%2BwYWMVUKQUFMyNmxQb82g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to