0

所以我有一个简单的模型继承,除了子模型是一个代理。问题是,在我看来,如果我这样做:

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')
4

0 回答 0