0

別のモデルの最新の関連を返すモデルフィールドが欲しいのですが。

例-

class Thing(models.Model):
  name = models.CharField(max_length=200)
  state = models.ForeignKey(State, query=latest) #pure fantasy
class State(models.Model):
  change = models.DateTimeField(auto_now_add=True)
  thing = models.ForeignKey(Thing)

モデルクラスStateがThingと多対1の関係にあると仮定します。

与えられた-some_thing=Thing.object.all()[0]

some_thing.stateを、手元にあるインスタンスThingの最新のState.change値を持つStateのインスタンスにします。

Djangoモデルレベルで、上記で説明したことを実行するインスタンス変数を指定したいと思います。これを行うには2つの方法が考えられますが、どちらもこのレベルではありません。

  1. 実際のDBレベルで-ビューを作成し、django db同期をオフにします(http://stackoverflow.com/questions/507795/can-i-use-a-database-view-as-a-model-in-django )。
  2. ビューレベル-新しいState行を作成するときに、その行を関連するThing.stateインスタンスに手動で設定します。
4

1 に答える 1

0

データベースレベルの動的外部キーを持つことはできません。ただし、アイテムをキャプチャするプロパティまたはメソッドを使用することはできます。

class Thing(models.Model):
    name = models.CharField(max_length=200)

    @property
    def state(self):
        return State.objects.latest('change')

class State(models.Model):
    change = models.DateTimeField(auto_now_add=True)
    thing = models.ForeignKey(Thing)
于 2013-01-02T06:17:16.227 に答える