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 <charett...@gmail.com> 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 <dylanyou...@gmail.com> 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 <game...@gmail.com> 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 django-users...@googlegroups.com.
>>>> To post to this group, send email to django...@googlegroups.com.
>>>> 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 django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> 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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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