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.

