私はdjango 1.2を使用しています 私は2つのモデルがあります。djangoでForeignKeyを制限する方法
EDITは:私が好きな子を選択できるようにしたいと思います。この例では
class Parent(models.Model):
name = models.CharField(max_length=255)
favorite_child = models.ForeignKey(Child)
class Child(models.Model):
name = models.CharField(max_length=255)
myparent = models.ForeignKey(Parent)
が、問題は管理者が私にすべての子を与えるということである:私はちょうどよりよい例を見つけました私は現在編集中の親の子供であるものからだけでなく、選択します。
元の例:
class Version(models.Model):
name = models.CharField(max_length = 255)
platform = models.ForeignKey("Platform",related_name='version_platform')
class Platform(models.Model):
name = models.CharField(max_length = 255)
default_version = models.ForeignKey(Version,related_name='platform_default_version')
は私がdefault_versionを選択したときに私は、現在のプラットフォームを持っているこれらのバージョンを選択することができますように、Djangoの管理者は、ドロップダウンを制限したいです。
たとえば、プラットフォームとしてjoomlaとバージョン '1.2'を持つ '1.1'という名前のバージョンがある場合、プラットフォームとしてwordpressを持っています。
私はそれをに表示するには、ドロップダウンで私のバージョン '1.2'を表示するために私はWordPressの管理者のdefault_versionドロップダウンを選択します。今はそれが私にすべてのバージョンを表示します。
ので、私はこの試みるhere を示したように、私はlimit_choices_toを制限しようとしています:
class Platform(models.Model):
name = models.CharField(max_length = 255)
default_version = models.ForeignKey(Version,limit_choices_to={'platform':XXXXX},related_name='platform_default_version')
をしかし、私は、私は自己を入れてみたが、それはうまくいきませんでしたXXXXのinsted入れすべきこととして失われています。
はまた、私はどちらか動作しませんでした
limit_choices_to={'platform.name':name}
を試してみました。
この例では好きな子を選ぶことができますが、問題は管理者が親の子である子供だけでなく、私が現在編集しているすべての子供を私に与えることです。
limit_choices_toは、httpを参照して、動的な値では動作しません。com/questions/1968596/django-limit-choices-is-this-correct私はこれがあなたが編集していない新しいプラットフォームを追加しようとしているようにあなたのケースを助けるかどうか分からないのですか? – JamesO
あなたの2番目の例に関しては、あなたの子供のための 'お気に入り'ブール値フィールドを持っていて、 'unique_together'を使います。 –
しかし、私は間違いのために部屋を開く2人の好きな子供を選ぶことができます。 – yossi