У меня возникла интересная проблема, я не знаю, является ли она проблемой, но она не дает ожидаемого значения, которое мне нужно. Вот мои две модели, например.Добавление ManyToManyField в правильном порядке
class Name(models.Model):
""" """
name = models.CharField(max_length=20)
class Dir(models.Model):
name = models.ForeignKey(Name)
children = models.ManyToManyField('Dir', null=True, blank=True, related_name="dirs")
Например, я добавил два каталога в дочерние элементы 'A', 'B'. Теперь я хочу вернуть своих двух детей в том же порядке, что и я. Но проблема в том, что она обеспечивает меня в порядке ниже. 'B', 'A'. Как сохранить порядок точно так же, как я добавил?
Поскольку Django не имеет гарантии сохранения порядка вставки, когда дело доходит до полей 'm2m', вам нужно будет сделать таблицу' through' и определить порядок там. –
Спасибо. Но как я могу использовать здесь, поскольку модель и ее дети имеют одно и то же имя «Dir»? Я попытался, но не могу понять, как это сделать. – user968677
Вы пробовали это? класс 'DirEntry (models.Model):' ' родитель = models.ForeignKey (Dir)' ' ребенок = models.ForeignKey (Dir)' ' порядок = models.IntegerField()' Но так как для меня «ManyToManyField» с 'through' имеет слишком много ограничений - например no 'add()', 'create()' и менеджеры не будут работать (я имею в виду переопределенные 'Dir.objects' с некоторым фильтром) - лучше использовать только промежуточную модель по внешним ключам. – HighCat