Я пытаюсь установить уникальный 6-значный контрольный номер с помощью django doc.но все же я не хочу, чтобы желаемый результат означал, что он принимает любое число или символ, но я хочу, чтобы он принимал только 6 целых чисел, а также удостоверялся, что число должно быть уникальным для всех пользователей
models.py
from django.db import models
from django.contrib.auth.models import User
from datetime import datetime
from uuid import uuid4
import string
from string import digits
class Mvouchar(models.Model):
cheque_no = models.CharField(max_length=6, null=True, blank=True, unique=True)
dated = models.DateTimeField(auto_now_add=True,null=True, blank=True)
def id_generator(size=6, chars=string.digits):
return ''.join(random.choice(chars) for _ in range(size))
def save(self):
if not self.cheque_no:
self.cheque_no = id_generator()
while Mvouchar.objects.filter(cheque_no=self.cheque_no).exists():
self.cheque_no = id_generator()
self.dated = datetime.now()
super(Mvouchar, self).save()
def __str__(self):
if self.related:
return self.related.relation.username.title()
else:
return 'no related!'
class Meta:
verbose_name_plural = "Single Cheque Multiple Vouchar Of Users"
views.py
def mvouchar(request):
if request.method == "POST":
userdata = User.objects.get(username = request.user)
accountdata = Signs.objects.get(relation_id=userdata.id)
chq_no = request.POST['chequeno']
mini = Mvouchar(related_id=accountdata.id, cheque_no = chq_no)
mini.save()
messages.success(request, "Your Cheque is Created")
return HttpResponseRedirect("/mvouchar/")
return render(request, 'cheque/mvouchar.html', {})