Thanks, but the recursive foreignkey *is* a one to many relationship...
unless you're talking about something else?
*“None of you has faith until he loves for his brother or his neighbor what
he loves for himself.”*


On Wed, Jul 27, 2022 at 10:16 AM Ammar Mohammed <[email protected]>
wrote:

> Hi
> Have you tried using OneToMany relationship ?
> On 27 Jul 2022 12:18, "Malik Rumi" <[email protected]> wrote:
>
>> I have a model with a recursive foreign key to 'self'. This is intended
>> to model a parent child
>> relation among instances. The forward relation, on a field called
>> 'childof', works as expected.
>> The reverse relation, using the related_name 'parent', comes up as a
>> RelatedManager,
>> again as expected. However, parent.count(), parent.all(), etc., always
>> give me the "Manager is
>> not accessible on instances" error. Many of these parent instances will
>> themselves also be a
>> childof some other instance, and apparently, that's my problem. I don't
>> know how to make Django
>> recognize the dual nature of some instances. Is there a way to hack the
>> RelatedManager to fix this?
>>
>> I am not getting any accessor errors from manage.py check.
>>
>> I posted this to Django Forum, but the respondent was not able to
>> duplicate my issue - i.e.,
>> he said it worked as expected for him. :-(
>>
>> I saw a suggestion to use an explicit junction table on Stack Overflow,
>> but making a round trip - or two - to an external table seems like an
>> awful lot of overhead for this situation.
>>
>> If instead of a junction table, if I made an explicit parentto field on
>> the model, would that work?
>> Presumably the related name on the childof field would still fail like it
>> does now,
>> but I would instead have the explicit parent field to work with. I still
>> would not have the
>> automatic reverse relation, and I would have to come up with a script to
>> fill in the parentto
>> field, but that might solve my problem:
>> # pseudocode
>> family = c.itertools.groupby(instance.childof)
>> family = c.pandas.groupby(instance.childof)
>> for f in family:
>> pop = c.objects.get(instance.childof)
>> OR
>> pop = instance.childof
>> c.objects.update(pop.parentto=f) # where parentto is a Postgresql
>> ArrayField
>> OR #
>> https://docs.djangoproject.com/en/4.0/ref/models/relations/#django.db.models
>> .fields.related.RelatedManager.add:
>> >>> b = Blog.objects.get(id=1)
>> >>> e = Entry.objects.get(id=234)
>> >>> b.entry_set.add(e) # Associates Entry e with Blog b
>> SEE ALSO:
>> https://docs.djangoproject.com/en/4.0/topics/db/examples/many_to_one/
>>
>> If I did this two field hack, then I don't really need either one to be
>> ForeignKeys any more,
>> do I? They could be a CharField and an ArrayField, couldn't they? That
>> breaks the extended
>> lookup chain - but I don't have that now, anyway - or at least, I only
>> have it in one direction.
>>
>> --
>> 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 view this discussion on the web visit
>> https://groups.google.com/d/msgid/django-users/3555d391-9c9e-440f-a603-103c9ccdc858n%40googlegroups.com
>> <https://groups.google.com/d/msgid/django-users/3555d391-9c9e-440f-a603-103c9ccdc858n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "Django users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/django-users/xGtwxhx2Nrw/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/CAHs1H7tjom_GRucP8Dx3x8AzQobS4GCva8a0nuN3bEWVB2Taqw%40mail.gmail.com
> <https://groups.google.com/d/msgid/django-users/CAHs1H7tjom_GRucP8Dx3x8AzQobS4GCva8a0nuN3bEWVB2Taqw%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAKd6oBxYfR6ntzGe8EGbnm0z6%2BxjiJDP5nmg9kF5kuB9pCZiEg%40mail.gmail.com.

Reply via email to