简体   繁体   English

ValueError:以10为底的int()的无效文字:-CharField

[英]ValueError: invalid literal for int() with base 10: - CharField

I'm trying to add an object to my database with models. 我正在尝试使用模型将对象添加到数据库中。 But getting an error. 但是出现错误。 As I understand CharField are strings? 据我了解CharField是字符串吗? And the error complains that it's an invalid integer? 错误提示它是无效的整数?

from django.shortcuts import HttpResponse
from Cr.models import User

def index(request):

    a = User('Ra', 'sen')
    a.save()
    print(a.username)

    return HttpResponse('<h1>Hello World!</h1>')

Models file 模型文件

from django.db import models

class User(models.Model):
    username = models.CharField(max_length=250)
    password = models.CharField(max_length=100)

console print: 控制台打印:

Internal Server Error: /Crowd/
Traceback (most recent call last):
  File "C:\Anaconda3\Lib\site-packages\django\core\handlers\base.py", line 149, in get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Anaconda3\Lib\site-packages\django\core\handlers\base.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Rasmus\workspace\Crowd\src\Cr\views.py", line 7, in index
    a.save()
  File "C:\Anaconda3\Lib\site-packages\django\db\models\base.py", line 708, in save
    force_update=force_update, update_fields=update_fields)
  File "C:\Anaconda3\Lib\site-packages\django\db\models\base.py", line 736, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "C:\Anaconda3\Lib\site-packages\django\db\models\base.py", line 801, in _save_table
    forced_update)
  File "C:\Anaconda3\Lib\site-packages\django\db\models\base.py", line 831, in _do_update
    filtered = base_qs.filter(pk=pk_val)
  File "C:\Anaconda3\Lib\site-packages\django\db\models\query.py", line 790, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "C:\Anaconda3\Lib\site-packages\django\db\models\query.py", line 808, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "C:\Anaconda3\Lib\site-packages\django\db\models\sql\query.py", line 1243, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "C:\Anaconda3\Lib\site-packages\django\db\models\sql\query.py", line 1269, in _add_q
    allow_joins=allow_joins, split_subq=split_subq,
  File "C:\Anaconda3\Lib\site-packages\django\db\models\sql\query.py", line 1203, in build_filter
    condition = self.build_lookup(lookups, col, value)
  File "C:\Anaconda3\Lib\site-packages\django\db\models\sql\query.py", line 1099, in build_lookup
    return final_lookup(lhs, rhs)
  File "C:\Anaconda3\Lib\site-packages\django\db\models\lookups.py", line 19, in __init__
    self.rhs = self.get_prep_lookup()
  File "C:\Anaconda3\Lib\site-packages\django\db\models\lookups.py", line 57, in get_prep_lookup
    return self.lhs.output_field.get_prep_lookup(self.lookup_name, self.rhs)
  File "C:\Anaconda3\Lib\site-packages\django\db\models\fields\__init__.py", line 744, in get_prep_lookup
    return self.get_prep_value(value)
  File "C:\Anaconda3\Lib\site-packages\django\db\models\fields\__init__.py", line 976, in get_prep_value
    return int(value)
ValueError: invalid literal for int() with base 10: 'Ra'
[16/Aug/2016 17:21:21] "GET /Crowd/ HTTP/1.1" 500 134020

a = User('Ra', 'sen')

The first positional argument is used for the pk . 第一个位置参数用于pk When creating a model you should use keyword arguments: 创建模型时,应使用关键字参数:

a = User(username='Ra', password='sen')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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