したがって、子モデルがプロキシであることを除いて、単純なモデル継承があります。問題は、私の見解では、私がそうする場合:
concept = get_object_or_404(Term, pk=...)
そして、私は電話します
concept.set_siblings('en') # 'en' is the langcode
set_siblings
もう1 つのパラメーター (the ) が必要なため、エラーが発生しますrelation_type
。Concept
モデル内のメソッドが呼び出されています。印刷するconcept.__class__.__name__
と が表示されますConcept
。では、どうすればモデルのset_siblings
内部を正しく呼び出すことができますか?Term
ここにドキュメントがありますが、問題を明確にするのに役立ちません。
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')