Изменил модель на 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' - все работает нормально. Посоветуйте что-нибудь?

Вернуться на верх