Ошибка 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'