Ваша модель неверна. Если у пользователя может быть более одной пары инструмент / уровень (я предполагаю, что инструмент и уровень работают вместе), вам нужна отдельная модель "Инструмент" и отношение один ко многим:
class User(AbstractBaseUser):
# remove instrument and level fields
class Instrument(models.Model):
user = models.ForeignKey(User, related_name="instruments")
instrument = models.CharField(max_length=255, choices=instrument_list)
level = models.CharField(max_length=255, choices=level_list)
затем используйте набор форм, как объяснено в ответе Джорди Макнаб, чтобы позволить пользователю добавлять новые инструменты.
Примечание: на самом деле правильной реляционной моделью здесь будет модель Instrument
и отношение «многие ко многим», оцениваемое уровнем пользователя для этого инструмента:
class User(AbstractBaseUser):
# remove instrument and level fields
class Instrument(models.Model):
instrument = models.CharField(max_length=255, choices=instrument_list, unique=True)
class UserInstrument(models.Model):
user = models.ForeignKey(User, related_name="instruments")
level = models.CharField(max_length=255, choices=level_list)