Python 保存到db时需要字符串或字节,如对象django
我试图将我的模型保存到db,但我不断得到错误Python 保存到db时需要字符串或字节,如对象django,python,django,sqlite,django-views,Python,Django,Sqlite,Django Views,我试图将我的模型保存到db,但我不断得到错误预期的字符串或字节,如object。我试着搜索,我发现我正在以元组的形式传递它,但我不知道我在哪里犯了错误 以下是邮政路线的视图: class PreviousSearchView(View): def post(self, request): if request.method == 'POST': searchdomain = request.POST['searchdomain'] domain = who
预期的字符串或字节,如object
。我试着搜索,我发现我正在以元组的形式传递它,但我不知道我在哪里犯了错误
以下是邮政路线的视图:
class PreviousSearchView(View):
def post(self, request):
if request.method == 'POST':
searchdomain = request.POST['searchdomain']
domain = whois.whois(searchdomain)
date = datetime.datetime.now()
domain_name = domain.domain_name
creation_date = domain.creation_date
expiration_date = domain.expiration_date
org = domain.org
city = domain.city
state = domain.state
zipcode = domain.zipcode
country = domain.country
search = Search(
searchdomain = domain_name,
org = domain.org,
city = domain.city,
state = domain.state,
zipcode = domain.zipcode,
country = domain.country,
user = User.objects.get(id = request.user.id),
date = date,
creation_date = domain.creation_date,
expiration_date = domain.expiration_date,
)
search.save() ## This is where the error is coming
return redirect('/')
模型如下:
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class User(AbstractUser):
pass
class Search(models.Model):
searchdomain = models.CharField(max_length=50)
creation_date = models.DateField(null=True)
expiration_date = models.DateField(null=True)
org = models.CharField(max_length=80, null=True)
date = models.DateField(null=True)
city = models.CharField(max_length=30, null=True)
state = models.CharField(max_length=30, null=True)
zipcode = models.IntegerField(null=True)
country = models.CharField(max_length=30, null=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.searchdomain
以下是完整的回溯:
Traceback (most recent call last):
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\views\generic\base.py", line 70, in view
return self.dispatch(request, *args, **kwargs)
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\views\generic\base.py", line 98, in dispatch
return handler(request, *args, **kwargs)
File "E:\whois_app\whois_app\search\views.py", line 45, in post
search.save()
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\base.py", line 753, in save
self.save_base(using=using, force_insert=force_insert,
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\base.py", line 790, in save_base
updated = self._save_table(
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\base.py", line 895, in _save_table
results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\base.py", line 933, in _do_insert
return manager._insert(
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\query.py", line 1254, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\sql\compiler.py", line 1396, in execute_sql
for sql, params in self.as_sql():
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\sql\compiler.py", line 1339, in as_sql
value_rows = [
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\sql\compiler.py", line 1340, in <listcomp>
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\sql\compiler.py", line 1340, in <listcomp>
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\sql\compiler.py", line 1281, in prepare_value
value = field.get_db_prep_save(value, connection=self.connection)
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\fields\__init__.py", line 823, in get_db_prep_save
return self.get_db_prep_value(value, connection=connection, prepared=False)
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\fields\__init__.py", line 1222, in get_db_prep_value
value = self.get_prep_value(value)
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\fields\__init__.py", line 1217, in get_prep_value
return self.to_python(value)
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\db\models\fields\__init__.py", line 1179, in to_python
parsed = parse_date(value)
File "C:\Users\indianLeo\.virtualenvs\whois_app-4Kx6o2xE\lib\site-packages\django\utils\dateparse.py", line 75, in parse_date
match = date_re.match(value)
TypeError: expected string or bytes-like object
我不能在自己的环境中复制这个确切的错误,但我倾向于它与数据库引擎有关。我在过去的数据库以及json请求/响应中也看到过类似的错误 要理解
TypeError:expected string或bytes like object
,它基本上告诉您,如果您熟悉的话,它正在查找类似于json.dumps()
输出结果的内容。在本例中,它获取了一个datetime.datetime对象,但通过回溯的外观,它不知道如何处理它
尝试使用此方法,如果不起作用,请确保可以使用本节中讨论的其他方法将该类型强制转换为str():
date=str(datetime.datetime.now())
date=date()
也许吧?如果没有代码的其余部分,很难判断。请包含完整的错误/堆栈跟踪,以便人们能够理解代码中错误的来源。什么是Search
?Search是@JohnGordon模型。我已经添加了回溯以及表单和views@markwalker_The问题在于“创建日期”:[“1997-11-11 05:00:00”,“1997-11-10 21:00:00-08:00”,“到期日”:[“2021-11-10 05:00:00”,“2021-11-09 00:00-08:00”],
class SearchForm(forms.ModelForm):
class Meta:
model = Search
fields = '__all__'
exclude = ('date', 'user', 'city', 'state', 'country', 'zipcode', 'expiration_date', 'creation_date', 'org')