所以我有一个简单的Model继承,除了子模型是一个代理。 问题是,在我看来,如果我这样做:
concept = get_object_or_404(Term, pk=...)
然后我打电话
concept.set_siblings('en') # 'en' is the langcode
我收到错误,因为set_siblings
还需要一个参数(relation_type
)。调用Concept
模型中的方法。如果我打印concept.__class__.__name__
,我会看到Concept
。那么如何正确调用set_siblings
模型中的Term
?
这是the docs,但这无助于我澄清问题。
models.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')