Я работаю над онлайн-викториной. Я не хочу, чтобы мои пользователи могли получить доступ к вопросам, набрав «/ questions / 1», поэтому мне нужен случайный идентификатор.
Я создал функцию, которая возвращает случайную строку (например, 'WUIbt'):
def random_id():
char = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJQLMNOPQRSTUVWXY"
id_len = 5
question_id = "".join(random.sample(char, id_len))
return question_id
Затем я использую его в своей модели вопроса:
class Question_Num(models.Model):
num_question = models.IntegerField(default=0)
question = models.TextField(max_length=1000, unique=True)
reponse = models.IntegerField(default=0)
id = models.CharField(primary_key=True, default=random_id, editable=False, max_length=5)
class Meta:
verbose_name = 'Question'
verbose_name_plural = 'Questions'
def __str__(self):
return f'Question n°{self.num_question}'
Но когда я создаю вопрос, у меня появляется ошибка datatype mismatch
. Вот форма, если она вам понадобится:
class Form_Creation_Question(forms.ModelForm):
num_question = forms.IntegerField(label='Numéro de la question')
class Meta:
model = Question_Num
fields = ['num_question', 'question', 'reponse']
Должен ли я сгенерировать случайное число, которое я преобразовываю в шестнадцатеричный формат, или можно создать строковый идентификатор?