为什么忽略我的模型限制?

时间:2015-08-05 08:13:09

标签: django python-2.7 django-models

这是我的model.py:

from django.db import models
class Code(models.Model):
    code = models.CharField(max_length=10)

    def __str__(self):
        return self.code

但是当我进入shell时,会返回错误:

In [1]: from mini_url.models import Code

In [2]: co = Code()

In [3]: co.save()

In [4]: co = Code("1234567891011")

In [5]: co.save()

我预计会有两个错误:

1 /来自co没有任何字段保存的事实,这是不可能的,因为没有null = True

2 /我保存了code字段长于10的代码!

任何想法?

1 个答案:

答案 0 :(得分:1)

  1. CharField的空值为空字符串''

  2. 您实际上并未设置code字段。你实际做的是设置id。

    >>> co = Code("1234567891011")
    >>> co.id
    "1234567891011"
    

    尝试:

    co = Code(code="1234567891011")
    co.save()
    

    或者,如果你真的不想使用关键字参数:

    co = Code(None, "1234567891011")
    

    如果您使用强制执行长度限制的数据库(某些数据库e.g. SQLite,请不要这样做),它将引发异常。