Ваш NewInviteCode
не возвращает ничего, это только print
с что-то. Если функция Python не возвращает что-то явно, она возвращает None
. Вы должны вернуть значение, например:
def NewInviteCode():
from secrets import token_urlsafe
<b>return</b> token_urlsafe(16)
При этом вы можете установить вызываемое значение как default=
параметр [Django-doc] для поля, например:
def <b>new_invite_code</b>():
from secrets import token_urlsafe
return token_urlsafe(16)
class Invitation(models.Model):
id = models.AutoField(primary_key=True, unique=True)
name = models.CharField(max_length=300, default='', blank=True)
email = models.EmailField(max_length=100, default='')
mobile = models.CharField(max_length=15, default='', blank=True)
last_sent = models.DateTimeField(default=timezone.now)
num_invitations = models.IntegerField(default=1)
uniqcode = models.CharField(max_length=300, <b>default=new_invite_code</b>, blank=True)
Таким образом, здесь мы не вызываем функцию, которую передаем new_invite_code
, а не результат new_invite_code
, поэтому мы не пишем скобки (например, * 1026) *).
это делает ваши модели и функции safe(..)
проще.
Примечание : согласно руководству по стилю PEP-8 вам, вероятно, следует переименовать NewInviteCode
в new_invite_code
, как я сделал во втором фрагмент кода.