Изменил модель на UNIQUE и форма сломалась
У меня была рабочая форма и страница со следующим кодом:
model.py
class TrafficSources(models.Model):
name = models.CharField('name', max_length=250)
token = models.CharField('token', max_length=250)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('ts_detail', kwargs={'slug': self.name.lower()})
Views.py
@login_required(login_url='/')
def settings(request):
error = ''
if request.method == 'POST':
pk = request.POST.get('id')
new_form = TrafficSourcesForm(request.POST)
print('new_form here:/n', new_form)
if new_form.is_valid():
if pk:
TrafficSources.objects.filter(id=pk).update(**new_form.cleaned_data)
error = f'{error} Saved.'
else:
new_form.save()
error = '1 new object added.'
return redirect(request.path, {'error': error})
else:
error = 'Something went wrong!'
new_form = TrafficSourcesForm()
forms = [TrafficSourcesForm(instance=x) for x in TrafficSources.objects.all()]
return render(request, 'mainpage/dashboard.html', {'new_form': new_form, 'forms': forms, 'error': error})
HTML.html
{% for form in forms %}
<form method="POST" class="table-row">
{% csrf_token %}
<input type="hidden" name="id" value="{{ form.instance.pk }}">
<div class="table-cell">{{ form.name }}</div>
<div class="table-cell">{{ form.token }}</div>
<div class="table-cell"><button class="btn-success w-100 form-control">Save</button></div>
</form>
{{ form.non_field_errors }}
{% endfor %}
<div class="table-row">
<span colspan="3">Add new traffic source:</span>
</div>
<form method="POST" class="table-row">
{% csrf_token %}
<span class="table-cell">{{ new_form.name }}</span>
<span class="table-cell">{{ new_form.token }}</span>
<span class="table-cell"><button class="btn btn-lg btn-success w-100">Add</button></span>
</form>
Поскольку мне нужен столбец 'name' в моей таблице для создания URL для django, я сделал следующее изменение в классе моей модели:
class TrafficSources(models.Model):
name = models.CharField('name', max_length=250, unique=True)
token = models.CharField('token', max_length=250)
Я выполнил миграцию и моя форма перестала работать. Она не показывает мне никаких ошибок (возможно, код ошибки не работает). И она не может пройти валидацию формы, если я меняю колонку 'token'. Если я меняю колонку 'name' - все работает нормально. Посоветуйте что-нибудь?