@@ -19,7 +19,6 @@ class TagField(CharField):
19
19
def __init__ (self , * args , ** kwargs ):
20
20
kwargs ['max_length' ] = kwargs .get ('max_length' , 255 )
21
21
kwargs ['blank' ] = kwargs .get ('blank' , True )
22
- kwargs ['default' ] = kwargs .get ('default' , '' )
23
22
super (TagField , self ).__init__ (* args , ** kwargs )
24
23
25
24
def contribute_to_class (self , cls , name ):
@@ -31,9 +30,6 @@ def contribute_to_class(self, cls, name):
31
30
# Save tags back to the database post-save
32
31
signals .post_save .connect (self ._save , cls , True )
33
32
34
- # Update tags from Tag objects post-init
35
- signals .post_init .connect (self ._update , cls , True )
36
-
37
33
def __get__ (self , instance , owner = None ):
38
34
"""
39
35
Tag getter. Returns an instance's tags if accessed on an instance, and
@@ -57,6 +53,13 @@ class Link(models.Model):
57
53
if instance is None :
58
54
return edit_string_for_tags (Tag .objects .usage_for_model (owner ))
59
55
56
+ tags = self ._get_instance_tag_cache (instance )
57
+ if tags is None :
58
+ if instance .pk is None :
59
+ self ._set_instance_tag_cache (instance , '' )
60
+ else :
61
+ self ._set_instance_tag_cache (
62
+ instance , edit_string_for_tags (Tag .objects .get_for_object (instance )))
60
63
return self ._get_instance_tag_cache (instance )
61
64
62
65
def __set__ (self , instance , value ):
@@ -74,14 +77,8 @@ def _save(self, **kwargs): # signal, sender, instance):
74
77
Save tags back to the database
75
78
"""
76
79
tags = self ._get_instance_tag_cache (kwargs ['instance' ])
77
- Tag .objects .update_tags (kwargs ['instance' ], tags )
78
-
79
- def _update (self , ** kwargs ): # signal, sender, instance):
80
- """
81
- Update tag cache from TaggedItem objects.
82
- """
83
- instance = kwargs ['instance' ]
84
- self ._update_instance_tag_cache (instance )
80
+ if tags is not None :
81
+ Tag .objects .update_tags (kwargs ['instance' ], tags )
85
82
86
83
def __delete__ (self , instance ):
87
84
"""
@@ -101,15 +98,6 @@ def _set_instance_tag_cache(self, instance, tags):
101
98
"""
102
99
setattr (instance , '_%s_cache' % self .attname , tags )
103
100
104
- def _update_instance_tag_cache (self , instance ):
105
- """
106
- Helper: update an instance's tag cache from actual Tags.
107
- """
108
- # for an unsaved object, leave the default value alone
109
- if instance .pk is not None :
110
- tags = edit_string_for_tags (Tag .objects .get_for_object (instance ))
111
- self ._set_instance_tag_cache (instance , tags )
112
-
113
101
def get_internal_type (self ):
114
102
return 'CharField'
115
103
0 commit comments