I experience the following problem. I have a class that has_many of another class which has another has_many to yet another class. All classes just store things like texts, no special references to other dataobjects are used. I use ModelAdmin to control the first class.
Now everything seems to be working, however in the ModelAdmin interface, the last class does not show an Add button (in the automatically generated popupfield).
So schematically I have
..has_many Class II
.. has_one Class I
.. has_many Class III
.. has_one Class II
I think many people are struggeling with this, and I hope that this schematical sketch and the wished solution will help not only me but more people around.
I always had this issue, scaffolding circular relationships. I tackle it in several ways...
1) model redesign
2) modify getCMSFields code to remove the scaffolding relations and creating them in a custom way
3) hack the code to not use the ORM and crate my own form fields
it's a while ago so I can't tell the precize solution, but the methods mentioned by swaiba are what I use currently to, espacially the first and second method. If you encounter a problem as I described above you must definitely wonder if your model is build logically, so if there isn't any more sufficient way to build it.
Secondly, try to overrun the default getCMSFields, as also properly explained in the tutorials like [url='http://doc.silverstripe.org/sapphire/en/tutorials/5-dataobject-relationship-management']tutorial 5 on DataObject relationships[/url]. I can't immediately share knowledge on the third way mentioned by swaiba, but I can confirm that the first two are for me always enough to put focus on.