简体   繁体   中英

How can I store the variables values from views to the Django models?

In my terminal the values of name and score are displaying but how to store that two variable values into the particular model(Results).

models.py:

class Results(models.Model):
    username = models.CharField(max_length=50,default='')
    score = models.IntegerField(null=True,blank=True)

views.py:

@login_required
def html2(request):
    name = request.GET.get('name')
    scores = request.GET.get('scores')
    print(name, scores)
    save_data = Results.objects.create(username=name, score=scores)
    context = {
        'data': save_data
    }

    return render(request,'quiz/html/html2.html',context)

Terminal:

[29/May/2020 13:15:22] "GET /api2/?format=json HTTP/1.1" 200 1467
Pavana 40

I tried this statement but it is displaying the not null constraint error so I deleted that statement Error:

    Traceback:

File "C:\Python38-32\lib\site-packages\django\db\backends\utils.py" in _execute
  85.                 return self.cursor.execute(sql, params)

File "C:\Python38-32\lib\site-packages\django\db\backends\sqlite3\base.py" in execute
  296.         return Database.Cursor.execute(self, query, params)

The above exception (NOT NULL constraint failed: quiz_results.username) was the direct cause of the following exception:

File "C:\Python38-32\lib\site-packages\django\core\handlers\exception.py" in inner
  34.             response = get_response(request)

File "C:\Python38-32\lib\site-packages\django\core\handlers\base.py" in _get_response
  126.                 response = self.process_exception_by_middleware(e, request)

File "C:\Python38-32\lib\site-packages\django\core\handlers\base.py" in _get_response
  124.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Python38-32\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
  21.                 return view_func(request, *args, **kwargs)

File "C:\Users\user\dev\samplequiz\quiz\views.py" in html2
  58.     save_data = Results.objects.create(username=name, score=scores)

File "C:\Python38-32\lib\site-packages\django\db\models\manager.py" in manager_method
  82.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "C:\Python38-32\lib\site-packages\django\db\models\query.py" in create
  413.         obj.save(force_insert=True, using=self.db)

File "C:\Python38-32\lib\site-packages\django\db\models\base.py" in save
  717.         self.save_base(using=using, force_insert=force_insert,

File "C:\Python38-32\lib\site-packages\django\db\models\base.py" in save_base
  748.             updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)

File "C:\Python38-32\lib\site-packages\django\db\models\base.py" in _save_table
  831.             result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)

File "C:\Python38-32\lib\site-packages\django\db\models\base.py" in _do_insert
  868.         return manager._insert([self], fields=fields, return_id=update_pk,

File "C:\Python38-32\lib\site-packages\django\db\models\manager.py" in manager_method
  82.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "C:\Python38-32\lib\site-packages\django\db\models\query.py" in _insert
  1136.         return query.get_compiler(using=using).execute_sql(return_id)

File "C:\Python38-32\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql
  1289.                 cursor.execute(sql, params)

File "C:\Python38-32\lib\site-packages\django\db\backends\utils.py" in execute
  100.             return super().execute(sql, params)

File "C:\Python38-32\lib\site-packages\django\db\backends\utils.py" in execute
  68.         return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)

File "C:\Python38-32\lib\site-packages\django\db\backends\utils.py" in _execute_with_wrappers
  77.         return executor(sql, params, many, context)

File "C:\Python38-32\lib\site-packages\django\db\backends\utils.py" in _execute
  85.                 return self.cursor.execute(sql, params)

File "C:\Python38-32\lib\site-packages\django\db\utils.py" in __exit__
  89.                 raise dj_exc_value.with_traceback(traceback) from exc_value

File "C:\Python38-32\lib\site-packages\django\db\backends\utils.py" in _execute
  85.                 return self.cursor.execute(sql, params)

File "C:\Python38-32\lib\site-packages\django\db\backends\sqlite3\base.py" in execute
  296.         return Database.Cursor.execute(self, query, params)

Exception Type: IntegrityError at /
Exception Value: NOT NULL constraint failed: quiz_results.username

save_data = Results.objects.create(username=name, score=scores)

How can I store the name and scores into the Results model.

It's because all the fields of column in database table are null and that's not good. You must have atleast one field to be non-empty so remove default='' in username. ie it should look like this username = models.CharField(max_length=50 ) After that run makemigrations and migrate commands to sync with database.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM