Модели Django (ManyToManyField?) — добавление одного и того же объекта несколько раз и сохранение порядка

#python #arrays #django #database #django-models

#python #массивы #django #База данных #django-модели

Вопрос:

У меня есть сетка, подобная линкору (с позициями A1, B1, C1, … A2, B2, C2, …) и объекты, которые перемещаются по сетке, где позиция может быть занята только одним объектом в любой момент времени. Я пытаюсь использовать модели Django для хранения путей, пройденных каждым объектом, и мне было интересно, как лучше всего это сделать.

Например, я хотел бы иметь возможность запрашивать и видеть, что ObjectZ был в [A1, B1, B2, C2, C3, D3, D2, C2, C3] — тогда я бы знал, что ObjectZ начался с A1 и теперь находится на C3.

Я попытался использовать ManyToManyField, но вскоре понял, что не могу добавить один и тот же объект несколько раз (то есть, я не мог добавить C2 более одного раза).

Заранее спасибо!

Ответ №1:

Вашим решением здесь могло бы быть создание вашего собственного класса, который связывал бы эти два и на основе battleship у вас могло бы быть поле order, которое вы увеличиваете каждый раз, когда создается новое перемещение для корабля, чтобы таким образом вы могли отслеживать порядок.

 class Movements(models.Model):
    order = models.IntegerField()
    battleship = models.ForeignKey(Battleship, on_delete=models.CASCADE, related_name="movements")
    square = models.ForeignKey(Square, on_delete=models.CASCADE, related_name="movements")