外部キーを介してそれに関連する2つのオブジェクトの1つを持つことができるdjangoモデルがあります(それらobject1
を and と呼びますobject2
)。他の 2 つのクラスは、機能的にはほぼ同じですが、含まれる情報がわずかに異なります。別の StackOverflow の質問の提案で、python メソッドを使用して、property()
存在するオブジェクトを設定および取得しています。次のようになります。
class Master(models.Model):
object1=models.ForeignKey(Object1, null=True)
object2=models.ForeignKey(Object2, null=True)
def get_object(self):
if self.object2_id:
return self.object2
else:
return self.object1
def set_object(self, instance):
if isinstance(instance, Object2):
self.object2 = instance
self.object1 = None
else:
self.object2 = None
self.object1 = instance
objectInstance = property(get_object, set_object)
これはクラスの簡易バージョンです。すべてが正しく機能していると思いました。objectInstance
情報を設定して取得し、いくつかのページに保持されているデータを表示することができました。私は django-tables2 を使用してテーブルに情報を表示していますが、すべての情報を表示することもできました。ただし、(提供されている便利な矢印を使用して) データを並べ替えようとすると、FieldError が発生します。
FieldError at /workflow/list/request/
Cannot resolve keyword u'objectInstance' into field. Choices are: object1, object2
これの原因は何ですか?または、原因を特定するためにどのコード スニペットを確認する必要がありますか?
編集:
したがって、この問題を抱えているのは私だけではないようです。この投稿は、django-tables2 に問題があることを示しているようです。django-tables2 でのクエリセット以外のデータの順序付け
テーブルに保持されている情報を表示できますが、property
並べ替えに問題があるようです。