Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 保存到db时需要字符串或字节,如对象django_Python_Django_Sqlite_Django Views - Fatal编程技术网

Python 保存到db时需要字符串或字节,如对象django

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

我试图将我的模型保存到db,但我不断得到错误
预期的字符串或字节,如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')