仅允许ForeignKey选择用户值

时间:2013-05-20 19:17:54

标签: python django

我正在尝试构建一个表单,用户可以从下拉菜单中选择一个外键。但是,我似乎找不到将foreignkey值限制为与登录用户关联的方法的方法。

例如,

Models.py

class Site(models.Model):
    trip = models.ForeignKey(Trip)
    user = models.ForeignKey(User)

当我将ModelForm传递给模板时,会生成一个包含所有行程值的下拉列表。如何让下拉列表仅包含特定登录用户的行程值?

1 个答案:

答案 0 :(得分:3)

你可以这样做:

class SiteForm(ModelForm):
    class Meta:
        model = Site

    def __init__(self, *args, **kwargs):
        user = kwargs.pop('user')
        super(SiteForm, self).__init__(*args, **kwargs)
        self.fields['trip'].queryset = Trip.objects.filter(id__in=user.site_set.values_list(trip, flat=True))

在视图中,

form = SiteForm(user=request.user)