我是Django和Python的初学者。
我首先生成50个随机数并将它们存储在列表中,然后存储在模型用户的文本字段中。
def generate(request, user_id):
easy = [] * 55
cnt = 0
while cnt < 50:
random_id = random.randint(1, 200)
if random_id not in easy:
easy.append(random_id)
cnt += 1
current_user = User.objects.get(pk=user_id)
current_user.question_array = json.dumps(easy)
return render(request, 'comp/question.html', {'easy': easy[0], 'question_id': 1,'user_id':user_id})
但是当我尝试从字段中检索值时,我只得到0。
当我尝试将其用作列表时,它会显示“int object不能下标”的错误。
这是检索它的代码:
def next(request,user_id, question_id):
current_user = User.objects.get(pk=user_id)
jsonDec = json.decoder.JSONDecoder()
easy = jsonDec.decode(current_user.question_array)
return render(request, 'comp/question.html',
{'easy': easy, 'question_id': int(question_id) + 1,'user_id':user_id})
我使用了mindthief给出的this问题的答案来将列表存储在表格中。
编辑:
我的主要问题是列表没有存储在数据库中。有什么想法吗?
答案 0 :(得分:0)
您需要添加.save()
调用以将数据保存到db:
current_user = User.objects.get(pk=user_id)
current_user.question_array = json.dumps(easy)
current_user.save()
...
顺便说一句,你也可以使用random.sample()
:
easy = random.sample(range(200), 50) # in python 2.x use xrange()
和json.loads()
:
easy = json.loads(current_user.question_array)
如果您使用PostgreSQL(强烈推荐),您甚至可以使用JsonField。
最后,如果问题存储在其他模型中(Question
),请考虑改为使用ManyToManyField
。