Ошибка Django : ValueError at / Поле 'ticket_id' ожидало число, но получило 'NS000001'

При вставке данных я получил эту ошибку. Возможно, это может быть связано с изменением первичного ключа по умолчанию. Я не хочу вводить поле ticket_id, так как я установил значение по умолчанию для этого поля (default='NS000001')

models.py

class Ticket(models.Model):
    ticket_id = models.AutoField(primary_key=True, default='NS000001', editable=False)
    server_details = models.CharField(max_length=100)
    send_date = models.DateTimeField(default=timezone.now)
    license_no = models.CharField(max_length=25)
    file = models.FileField(upload_to='documents/%Y/%m/%d/')
    
    def __str__(self):
        return self.ticket_id

views.py

def Index(request):
    if request.method == "POST":
        form = SaveTicket(request.POST,request.FILES or None) 
        if form.is_valid():
            form.save()
            print(form)
            return redirect('index')
    else:
        form = SaveTicket()
    return render(request, 'index.html')

forms.py

class SaveTicket(forms.ModelForm):
    class Meta:
        model = Ticket
        fields = ['server_details','send_date','license_no','file']

first

вам не нужно определять Автополе самостоятельно.

class Ticket(models.Model):
    server_details = models.CharField(max_length=100)
    send_date = models.DateTimeField(default=timezone.now)
    license_no = models.CharField(max_length=25)
    file = models.FileField(upload_to='documents/%Y/%m/%d/')

секунда

Если ID вашего билета статичен - вы можете создать свойство:

class Ticket(models.Model):

    ...  # any staff here

    @property
    def ticket_id(self):
        return f'NS{self.pk or 0}'

last

после этого вы можете использовать его везде:

print(ticket.ticket_id)
>>>'NS2134154'
Вернуться на верх