Django не сохраняет форму (ничего не происходит)
\\\models.py
class BasicSettings(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL,
default=None,
null=True,
on_delete=models.CASCADE,
)
settings_description = models.BooleanField(default=False)
settings_photo = models.BooleanField(default=False)
settings_username = models.BooleanField(default=False)
settings_background = models.BooleanField(default=False)
\\\views.py
try:
basic_settings = request.user.basicsettings
except BasicSettings.DoesNotExist:
basic_settings = BasicSettings(user=request.user)
if request.method == 'POST':
basicsettings_form = BasicSettingsForm(
request.POST, instance=basic_settings)
else:
basicsettings_form = BasicSettingsForm(instance=basic_settings)
return render(request, 'dashboard.html', {'basicsettings_form': basicsettings_form})
\\\forms.py
class BasicSettingsForm(forms.ModelForm):
class Meta:
model = BasicSettings
fields = (
'settings_description',
'settings_photo',
'settings_username',
'settings_background',
)
widgets = {
'settings_description': forms.TextInput(attrs={'type': 'checkbox', 'class': 'checkbox', 'id': 'test1'}),
'settings_photo': forms.TextInput(attrs={'type': 'checkbox', 'class': 'checkbox', 'id': 'test2'}),
'settings_username': forms.TextInput(attrs={'type': 'checkbox', 'class': 'checkbox', 'id': 'test3'}),
'settings_background': forms.TextInput(attrs={'type': 'checkbox', 'class': 'checkbox', 'id': 'test4'}),
}
\.html
<form method="POST">
{% csrf_token %}
{{ basicsettings_form }}
<button type="submit">Dad9adbaiduaadtest</button>
Когда я нажимаю на кнопку отправки, страница просто обновляется, но ничего не происходит. Что может быть причиной этого?
Код выше - это всего лишь фрагмент. Может быть, ничего не происходит, потому что у меня несколько форм в одном представлении? Весь вид выглядит так https://pastebin.com/Bu5NLTX1, но я просто хотел дать вам соответствующую часть
В этом может быть проблема...
From Создание форм из моделей:
Каждая ModelForm также имеет метод save(). Этот метод создает и сохраняет объект базы данных из данных, привязанных к форме. Подкласс ModelForm может принимать существующий экземпляр модели в качестве аргумента ключевого слова instance; если оно задано, save() обновит этот экземпляр. Если он не указан, save() создаст новый экземпляр указанной модели:
.
Так может попробуем:
basicsettings_form = BasicSettingsForm(
request.POST, instance=basic_settings)
if basicsettings_form.is_valid():
basicsettings_form.save()
Вы добавили action в свою форму action=your_action_url
<form action ="{% url 'your_url_name' %}" method="POST">
{% csrf_token %}
{{ basicsettings_form }}
<button type="submit">Dad9adbaiduaadtest</button>