0

我正在共享一个虚拟代码,希望自己尽可能清楚。

1.我有一个这样的模型

from django.db.models import Model, CharField, IntegerField, DateField

class Account(Model):
    name = CharField(max_length=30, null=False, blank=False, unique=True)
    rank = IntegerField(null=True, blank=True)
    date = DateField(null=True, blank=True)

2. 我在 django 中有这样的数据库设置

DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': 'TEST',
        'HOST': 'localhost'
    }
}

3.运行模型迁移命令后,在 django shell 中,我将两个对象(文档)添加到配置的 TEST DB 中,如下所示

In [1]: from dummy.models import Account

In [2]: Account.objects.create(name="Sai")
Out[2]: <Account: Sai>

In [3]: Account.objects.create(name="Ravi", rank=1)
Out[3]: <Account: Ravi>

4.当我签入 Mongodb CLI 时,我也得到了空值

> db.dummy_account.find().pretty();
{
        "_id" : ObjectId("5e4f54939069175d6ed7890e"),
        "id" : 1,
        "name" : "Sai",
        "rank" : null,
        "date" : null
}
{
        "_id" : ObjectId("5e4f54a89069175d6ed7890f"),
        "id" : 2,
        "name" : "Ravi",
        "rank" : 1,
        "date" : null
}

:(不应存储具有 null 的字段)我需要做什么才能获得这样的预期结果?

> db.dummy_account.find().pretty();
{
        "_id" : ObjectId("5e4f54939069175d6ed7890e"),
        "id" : 1,
        "name" : "Sai"
}
{
        "_id" : ObjectId("5e4f54a89069175d6ed7890f"),
        "id" : 2,
        "name" : "Ravi",
        "rank" : 1
}
4

1 回答 1

0

由于您创建的模型Account有 3 个字段,因此 DjAngo 将始终插入“行”(或条目),并将排名和日期设置为None. 因此,无法知道用户是否实际将这些值设置为None,或者它们只是没有输入。

这是 DjAngo 中的一个限制。

于 2020-02-28T15:14:18.923 回答