小编Bip*_*Lob的帖子

为什么我收到“未实现错误:数据库对象未实现真值测试或 bool()”。在 django 中运行 makemigration cmd 时

我正在尝试使用Django进行连接。我更改了数据库参数,但收到此错误MongoDBDjongo

未实现错误:数据库对象未实现真值测试或 bool()。

当我运行 makemigration 命令时。

请问有人可以解释一下为什么我会收到此错误以及如何解决它吗?

我有包含settings.py文件、错误日志和mongodb compass安装映像。

设置.py

"""
Django settings for Chatify project.

Generated by 'django-admin startproject' using Django 3.2.9.

For more information on this file, see
https://docs.djangoproject.com/en/3.2/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/3.2/ref/settings/
"""

from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/ …
Run Code Online (Sandbox Code Playgroud)

python django mongodb djongo

23
推荐指数
4
解决办法
3万
查看次数

Django模型管理保存方法中的唯一约束错误

这是Python 3.8Django 3.1.3

我有一个具有独特领域的模型

class SomeModel(models.Model):
    name = models.CharField(max_length=200, unique=True)
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种在存在唯一约束违规时自动更改字段值的方法。

如果我创建一个新实例,而name="Kevin"另一个实例已经存在,则在调用 save() 时,它会使用后缀更改新实例的名称。

例如:数据库为空

>>> foo = SomeModel()
>>> foo.name = "kevin"
>>> foo.save()

# again
>>> foo = SomeModel()
>>> foo.name = "kevin"
>>> foo.save()

# and again
>>> foo = SomeModel()
>>> foo.name = "kevin"
>>> foo.save()


>>> for foo in SomeModel.objects.all():
>>>    print(foo.name)

kevin
kevin_01
kevin_02
Run Code Online (Sandbox Code Playgroud)

没有找到执行此操作的方法,我想我必须重写保存方法并捕获唯一约束错误才能执行此操作。有任何想法吗 ?谢谢

python django orm django-models

5
推荐指数
1
解决办法
6627
查看次数

docker-compose.yml,网络必须是映射,而不是数组

不确定 yaml 缩进是如何工作的。定义应用程序通信的外部网络时出现错误

./docker-compose.yml', network must be a mapping, not an array

    version : '3'

    services:
       zmq_sub:
         image: zmq_sub
       zmq_pub:
         image: zmq_pub
         depends_on:
           - zmq_sub 

    networks:
       - zmq_network:
         external: true
Run Code Online (Sandbox Code Playgroud)

networking docker docker-compose

5
推荐指数
2
解决办法
4万
查看次数

django“str”对象没有属性“_meta”

对不起我的英语不好。我有来自另一台服务器的一些数据,但我需要像 JSON 一样输出这些数据。

如果我在控制台中打印响应:

{
    'responseStatus': {
        'status': [],
    },
    'modelYear': [
        1981,
        1982
      
    ]
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我像有错误一样返回此响应HttpResponse

AttributeError:“str”对象没有属性“_meta”

这是我的代码:

data = serializers.serialize('json', response, ensure_ascii=False)
return HttpResponse(data, content_type="application/json")
Run Code Online (Sandbox Code Playgroud)

更新:

我尝试过这个:

from django.http import JsonResponse

def some_view(request):
    ...
    return JsonResponse(response, safe=False)
Run Code Online (Sandbox Code Playgroud)

但有错误:

“ModelYears”类型的对象不可 JSON 序列化

更新:

我确实是这样的:

import json
from django.http import JsonResponse

def some_view(request):
        ...
        return JsonResponse(json.loads(response))
Run Code Online (Sandbox Code Playgroud)

但有错误:

the JSON object must be str, bytes or bytearray, not 'ModelYears'
Run Code Online (Sandbox Code Playgroud)

python django json

4
推荐指数
1
解决办法
2万
查看次数

错误:无法为使用 PEP 517 的 PyNaCl 构建轮子,并且无法直接安装

我正在使用最新版本Pycharm

当我输入此命令时:

pip install -U discord.py[voice]
Run Code Online (Sandbox Code Playgroud)

此错误消息显示:

ERROR: Could not build wheels for PyNaCl which use PEP 517 and cannot be installed directly

我应该怎么办?

python pep pycharm pynacl pep517

3
推荐指数
1
解决办法
2万
查看次数

如何使用 psycopg2 从具有键值对的 postgres 表中检索某个键的值

我是新手python,正在尝试使用psycopg2阅读Postgres

我正在从名为部署的数据库表中读取数据,并尝试处理具有三个字段 id、Key 和 value 的表中的值。

import psycopg2
conn = psycopg2.connect(host="localhost",database=database, user=user, password=password)
cur = conn.cursor()
cur.execute("SELECT \"Value\" FROM deployment WHERE (\"Key\" = 'DUMPLOCATION')")
records = cur.fetchall()
print(json.dumps(records))
[["newdrive"]]
Run Code Online (Sandbox Code Playgroud)

我希望这只是“newdrive”,这样我就可以在下一行中进行字符串比较以检查它是否是“newdrive”

我在 json.dumps 输出上尝试了 json.loads ,但没有成功。

>>> a=json.loads(json.dumps(records))
>>> print(a)
[['newdrive']]

I also tried to print just the records without json.dump
>>> print(records)
[('newdrive',)]
Run Code Online (Sandbox Code Playgroud)

python postgresql psycopg2

2
推荐指数
1
解决办法
4372
查看次数