我有一个基本上是标签的模型:
class Tag( models.Model ):
tag = models.CharField( max_length=15 )
text_color = RGBColorField(default='#000000')
background_color = RGBColorField( default='#88ff88' )
entered_by = models.ForeignKey( 'member.Member', related_name='tag_entered_by' )
entered_on = models.DateTimeField( default=timezone.now )
content_type = models.ForeignKey(ContentType, related_name="tag_content_type")
def __str__(self):
return self.tag
几天前,我根据ContentType创建了一些与特定模型关联的标签。一切都很好,“我没有改变任何东西”。
然后我从shell创建了一些标签:
>> class_object=get_model('call', 'Call')
>> ct = ContentType.objects.get_for_model(class_object)
>>> tag = Tag(tag='thetag', text_color='#FFFFFF', background_color='#B40303', content_type=ct, entered_by=automem)
>>> tag.content_type
<ContentType: Call>
>>> tag.save()
>>> tag.content_type
<ContentType: Call>
>>>
>>>
>>> ts = Tag.objects.filter(tag='thetag')
>>> for t in ts:
... print(t.content_type)
...
invoice
“发票”是另一种型号。所以,我不明白为什么在这种情况下,content_type没有被正确保存。
我正在使用Django 1.8和Python 3.4。
[补充] 更多信息:
>>> ct
<ContentType: Call>
>>> ct.id
24
但是当我这样做时:
>>> for t in ContentType.objects.all():
... print('{} {}'.format(t, t.id))
我得到了
...
invoice 24
...
Call 28
...