Making a tree structure in django models?
activerecord, django, django-models, python
Solution
`ManyToOneRel` is an internal implementation class, it's not for use in your models.
But why do you think you need it anyway? As the documentation explains in detail, when you define a ForeignKey, you automatically get a reverse relation. So in your case, if you define `parent` then you automatically get `self.foomodel_set` already: and you can make it even more explicit by using the `related_name` parameter:
parent = models.ForeignKey('self', blank=True, null=True, related_name='children')
Note that if you're planning on doing complicated things with trees, you probably want to be using the django-mptt library.
Problem
I want to have a model with 2 fields, children and parent. How do I do this in django? I have something like this ``` from django.db import models class FooModel(models.Model) parent = models.ForeignKey('self', blank=True, null=True) children = models.ManyToOneRel('self', blank=True, null=True) def __init__(self, *args, **kwargs): super(FooModel, self).__init__(*args, **kwargs) self.parent.children.add(self) ``` But I don't think i'm supposed to use the ManyToOneRel like this (especially because it's giving me a keyword error on 'blank'). Any advice?