django - 预期的字符串或类似字节的对象 Django PostgreSQL 错误
问题描述
大家好,我在尝试创建或更新用户模型时遇到此错误,错误发生在配置文件模型上
我将 Django 2.1.7 与 PostgreSQL 一起使用
内部服务器错误:/accounts/update/
文件“E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\utils\dateparse.py”,第 106 行,在 parse_datetime match = datetime_re.match(value) TypeError: expected string or字节类对象
错误回溯
Internal Server Error: /accounts/update/
Traceback (most recent call last):
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
response = self.process_exception_by_middleware(e, request)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\views\generic\base.py", line 68, in view
return self.dispatch(request, *args, **kwargs)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\rest_framework\views.py", line 505, in dispatch
response = self.handle_exception(exc)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\rest_framework\views.py", line 465, in handle_exception
self.raise_uncaught_exception(exc)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\rest_framework\views.py", line 476, in raise_uncaught_exception
raise exc
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\rest_framework\views.py", line 502, in dispatch
response = handler(request, *args, **kwargs)
File "E:\practice my skills\fullStackDjangoAndReact\chatapp\accounts\api.py", line 73, in post
user = user_ser.save()
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\rest_framework\serializers.py", line 207, in save
self.instance = self.update(self.instance, validated_data)
File "E:\practice my skills\fullStackDjangoAndReact\chatapp\accounts\serializers.py", line 67, in update
profile.save()
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\db\models\base.py", line 718, in save
force_update=force_update, update_fields=update_fields)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\db\models\base.py", line 748, in save_base
updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\db\models\base.py", line 812, in _save_table
forced_update)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\db\models\base.py", line 861, in _do_update
return filtered._update(values) > 0
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\db\models\query.py", line 712, in _update
return query.get_compiler(self.db).execute_sql(CURSOR)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\db\models\sql\compiler.py", line 1383, in execute_sql
cursor = super().execute_sql(result_type)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\db\models\sql\compiler.py", line 1052, in execute_sql
sql, params = self.as_sql()
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\db\models\sql\compiler.py", line 1349, in as_sql
val = field.get_db_prep_save(val, connection=self.connection)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\db\models\fields\__init__.py", line 790, in get_db_prep_save
return self.get_db_prep_value(value, connection=connection, prepared=False)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\db\models\fields\__init__.py", line 1429, in get_db_prep_value
value = self.get_prep_value(value)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\db\models\fields\__init__.py", line 1408, in get_prep_value
value = super().get_prep_value(value)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\db\models\fields\__init__.py", line 1268, in get_prep_value
return self.to_python(value)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\db\models\fields\__init__.py", line 1369, in to_python
parsed = parse_datetime(value)
File "E:\PRACTI~1\FULLST~1\chatapp\env\lib\site-packages\django\utils\dateparse.py", line 106, in parse_datetime
match = datetime_re.match(value)
TypeError: expected string or bytes-like object
轮廓模型:
class Profile(models.Model):
user = models.OneToOneField(User ,on_delete=models.CASCADE)
icon = models.CharField(max_length=256)
active = models.BooleanField(default=False)
join_date = models.DateTimeField(default=timezone.now, blank=True, null=True)
born_date = models.DateTimeField(blank=True, null=True)
串行器
class UpdateUserSer(serializers.ModelSerializer):
profile = UpdateProfileSer()
class Meta:
model = User
fields = ("username","email","first_name","profile")
def update(self , instance , validated_data):
prfile_data = validated_data.pop("profile")
instance.username = validated_data.get("username" , instance.username)
instance.email = validated_data.get("email" , instance.email)
instance.first_name = validated_data.get("first_name" , instance.first_name)
instance.save()
profile = instance.profile
profile.icon = prfile_data.get("icon" ,profile.icon)
profile.save()
return instance
def validate(self , data):
user_instance = self.context["request"].user
user_email = data["email"]
users = User.objects.all()
if users.filter(email = user_email).exclude(id=user_instance.id).exists():
raise serializers.ValidationError("this email has been token choose another one please")
return data
更新配置文件服务器
class UpdateProfileSer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = ("icon",)
解决方案
推荐阅读
- javascript - 如何销毁和重新初始化 lightgallery.js
- c# - 已解决:IIS 应用程序池应用程序和控制台应用程序运行不佳。- 命名互斥体
- google-calendar-api - 如何确定 Google Calendar API 中系列的原始重复事件 ID?
- c# - CSVHelper 无法映射结果
- javascript - 使用 JS 悬停的工具提示
- html - 具有未正确生成的可滚动属性的引导表
- javascript - 浏览器后退按钮应该与我表单中的后退按钮相同
- apache-kafka - Kafka Log Compacted Topic Duplication Values against the same key not deleted
- rust - Rust 期货——将函数改编为 Sink
- c# - 使用 Task.Delay 延迟 24 小时是否安全