While Inserting data, I got this error. May be this could be due to change of default primary key. I do not want to enter ticket_id field as I have set default value for that field (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']
you don't need define Autofield yourself.
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/')
If your Ticket ID is static - you can create a property:
class Ticket(models.Model):
... # any staff here
@property
def ticket_id(self):
return f'NS{(self.pk or 0):06d}'
after that you can use it everywhere:
print(ticket.ticket_id)
>>>'NS2134154'