Как мне заставить поле ForeignKey использовать несколько выпадающих списков из одного списка и удалять дубликаты по мере их выбора в Django?

#python #django #django-models #django-admin

#питон #django #django-модели #django-администратор #python #django-models #django-admin

Вопрос:

Я пытаюсь настроить проект Django, который будет ссылаться на список пользователей.

В одной из моих моделей я использую поля ForeignKey для указания на таблицу пользователей.

У меня настроено несколько слотов, связанных с таблицей пользователей, и я хотел бы иметь возможность выбирать пользователя из этой таблицы при добавлении данных. Но я также хотел бы, чтобы имя пользователя было удалено из остальных выпадающих списков, если они выбраны в одном из выпадающих списков.

. У меня в таблице 3 пользователя. Джон, Марк, Энди

На странице ввода я хотел бы иметь 3 выпадающих поля. Каждый из них связан с таблицей users.

В первом поле, когда я нажимаю на него, все три пользователя должны появиться в качестве опций, Джон, Марк и Энди.

После выбора Джона второе поле должно давать мне возможность выбрать только Марка или Энди.

После выбора Пометить для второго поля, третье поле должно предоставлять возможность выбрать Andy или остаться пустым.

Мой models.py настройка такая:

 class Users(models.Model):
    name = models.CharField(max_length=15)

class Session(models.Model):
    Slot1 = models.ForeignKey(Users, on_delete=models.CASCADE, related_name='Slot1')
    Slot2 = models.ForeignKey(Users, on_delete=models.CASCADE, related_name='Slot2')
    Slot3 = models.ForeignKey(Users, on_delete=models.CASCADE, related_name='Slot3')
    Slot4 = models.ForeignKey(Users, on_delete=models.CASCADE, related_name='Slot4')
    Slot5 = models.ForeignKey(Users, on_delete=models.CASCADE, related_name='Slot5')
    Slot6 = models.ForeignKey(Users, on_delete=models.CASCADE, related_name='Slot6')
    Slot7 = models.ForeignKey(Users, on_delete=models.CASCADE, related_name='Slot7')
    Slot8 = models.ForeignKey(Users, on_delete=models.CASCADE, related_name='Slot8')
    Slot9 = models.ForeignKey(Users, on_delete=models.CASCADE, related_name='Slot9')
  

В идеале, это работало бы на странице администратора, но если мне нужно настроить интерфейсную версию, чтобы она работала, я это сделаю.