Not necessarily, no. The current way of doing it ensures a few things:
- Pages in the primary language always have translation_of_id=None
- Pages in secondary languages may have translation_of set, but the
pointed-at object is always the primary language translation
This makes it much easier and more efficient to determine all
available translations. If you allow arbitrary translations for
translation_of you'll have to walk translation chains to collect all
translations of a certain page. You might need len(LANGUAGES) SQL
queries in the worst case to collect all translation objects. We
wanted to avoid that.
That being said, it seems you hit a real bug.
Matthias