Добрый день, застрял с formset, возможно это вообще не то, что мне нужно.
Мне необходимо создать динамическую форму настроек пользователя в его панели управления.
У меня есть 2 модели:
class Settings(models.Model):
INPUT = 'TextInput'
TEXTAREA = 'Textarea'
WIDGET_CHOICES = [
(INPUT, 'Input'),
(TEXTAREA, 'Textarea')
]
slug = models.CharField(max_length=60, unique=True, default=None)
name = models.CharField(max_length=60)
description = models.CharField(max_length=600)
widget = models.CharField(max_length=10, choices=WIDGET_CHOICES, default=INPUT)
class Meta:
verbose_name = 'Настройки'
verbose_name_plural = 'Настройки'
class UserSettings(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
setting = models.ForeignKey(Settings, on_delete=models.CASCADE)
value = models.TextField()
class Meta:
verbose_name = 'Настройки пользователей'
verbose_name_plural = 'Настройки пользователей'
Я хочу отобразить на странице /dashboard/settings для пользователя набор пар "имя опции" (не редактируется, тег label) + "значение опции" (редактируется, тег textarea), подставив в них существующие значения из модели UserSettings. Все должно выводиться в одной форме, чтобы внизу была одна кнопка "Сохранить".
При отправке формы в UserSettings должны сохраняться только те пары, где у опции значение не пустое, либо если опция уже существует в бд для пользователя и значение пустое, то ее нужно удалить.