Django 1.1 を実行していますが、ManytoManyField の「limit_choices_to」オプションが機能しません。
私は2つのモデルを持っています:
class MemberPhoto(ImageModel):
title = models.CharField(_('title'), max_length=255, blank=True, null=True)
caption = models.CharField(_('caption'), max_length=255, blank=True, null=True)
date_added = models.DateTimeField(_('date added'), default=datetime.now, editable=False)
member = models.ForeignKey(User)
def __unicode__(self):
return u'%s (%s)' % (self.member.username, self.id)
と
class lock(models.Model):
user = models.ForeignKey(User, related_name="owner")
to_user = models.ForeignKey(User, related_name="to_user")
unlocked_photos = models.ManyToManyField(MemberPhoto, blank=True, null=True, limit_choices_to = {'member':'user'})
objects = locking_manager()
2 番目のモデルでは、複数選択フィールドに表示される "unlocked_photos" ("MemberPhoto" オブジェクト) のみが、"ロック」オブジェクトの「ユーザー」(ユーザーオブジェクトでもあります)。
これについては Django のドキュメントに従っていると思っていましたが、うまくいきません。次のエラーが表示されます。
TemplateSyntaxError
Caught an exception while rendering: invalid input syntax for integer: "user"
「limit_choices_to」を次のように変更してみました。
limit_choices_to = {'member': user} --- 機能しません
limit_choices_to = {'member__username':'kyle'} --- これは機能しますが、役に立ちません。ユーザー名を手動で指定しているだけです
代わりに、現在の「ロック」オブジェクトからユーザーを取得し、それによって MemberPhoto の「メンバー」プロパティをフィルター処理するにはどうすればよいですか?
助けてくれる人に感謝します。
カイル