0

グループとリストアイテムの2つのモデルがあります。リストアイテムはグループ内に属します:

class List_Item(models.Model):
    name = models.CharField("List Item Name", max_length=200, unique = True)
    group = models.ForeignKey(Group, verbose_name="Group")

    creation_date = models.DateTimeField("Creation Date", default=datetime.now)
    notes = models.TextField("Notes", blank=True)

    user = models.ForeignKey(User, editable=False)

    def __unicode__(self):
        return self.name

class Group(models.Model):
    name = models.CharField("Group Name", max_length=200, unique = True)
    notes = models.TextField("Notes", blank=True)

    user = models.ForeignKey(User, editable=False)

    def __unicode__(self):
        return self.name

リストアイテムのフォームでは、ModelFormにグループのドロップダウンがあります。現在、グループが属するユーザーに関係なく、すべてのグループが一覧表示されます。しかし、ログインしているユーザーに属するグループのみを表示したいのですが、どうすればよいですか?

4

1 に答える 1

1

initメソッド内のフォームフィールドをオーバーライドする必要があります。ログインしたユーザーをビューからフォームに渡し、それに基づいてフィルタリングすることができます

#form
class ListItemform(forms.ModelForm):
    def __init__(self. *args, **kwrgs):
            self.user = kwargs.pop('user', None)
            super(ListItemform, self).__init__(*args, **kwargs)
            self.fields['group'].queryset = Group.objects.filter(user = self.user)
#view
def displayform(request):
    user = request.user
    form = ListItemForm(user = user)
    return ...
于 2012-11-28T17:21:54.850 に答える