#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")