0

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

例如,

模型.py

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

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

4

1 回答 1

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)
于 2013-05-20T19:23:33.480 回答