所以我有一个简单的模型继承,除了子模型是一个代理。问题是,在我看来,如果我这样做:
concept = get_object_or_404(Term, pk=...)
然后我打电话
concept.set_siblings('en') # 'en' is the langcode
我收到一个错误,因为set_siblings
需要一个参数(the relation_type
)。模型内部的方法Concept
被调用。如果我打印concept.__class__.__name__
,我会看到Concept
. 那么如何正确调用模型set_siblings
内部呢?Term
这是文档,但这并不能帮助我澄清问题。
模型.py
class Concept(Model):
namespace = ForeignKey(Namespace)
code = CharField(max_length=10)
date_entered = DateTimeField(blank=True, null=True)
date_changed = DateTimeField(blank=True, null=True)
# .....
def set_siblings(self, langcode, relation_type):
setattr(self, relation_type + '_concepts',
self.get_siblings(langcode, relation_type))
#.....
class Term(Concept):
def set_siblings(self, langcode):
for relation_type in ['broader', 'narrower', 'related']:
super(Term, self).set_siblings(langcode, relation_type)
class Meta:
proxy = True
verbose_name = "concept"
objects = ConceptManager('Concepts')