我将首先描述模型并解释我遇到的问题。
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这样做?