Django IntegrityError'列tag_id不能为空'

时间:2014-05-20 17:19:31

标签: python mysql sql django

我将首先描述模型并解释我遇到的问题。

class Tag(models.Model):
    id = models.CharField(_(u'id'), max_length=128, primary_key=True)

class Post(models.Model):
    tags = models.ManyToManyField(Tag, blank=True, null=True)

当我执行此代码时,我在主题中收到错误:

post_obj = Post.objects.get(id='someid')
tag_obj = Tag.objects.get(id='')
post_obj.tags.add(tag_obj)

注意标签id是一个空字符串。

我已经研究了正在执行的sql,它看起来像这样:

INSERT INTO `post_tags` (`post_id`, `tag_id`) VALUES ('someid', NULL)

空字符串tag_id正在转换为NULL值。

mysql显示post_tag的输出列(manytomany table):

+---------------------+--------------+------+-----+---------+----------------+
| Field               | Type         | Null | Key | Default | Extra          |
+---------------------+--------------+------+-----+---------+----------------+
| id                  | int(11)      | NO   | PRI | NULL    | auto_increment |
| post_id             | varchar(128) | NO   | MUL | NULL    |                |
| tag_id              | varchar(128) | NO   | MUL | NULL    |                |
+---------------------+--------------+------+-----+---------+----------------+

所以django在添加标签时将空字符串转换为NULL。我怎么能阻止django这样做?

0 个答案:

没有答案