我正在尝试构建一个表单,用户可以从下拉菜单中选择一个外键。但是,我似乎找不到将foreignkey值限制为与登录用户关联的方法的方法。
例如,
Models.py
class Site(models.Model):
trip = models.ForeignKey(Trip)
user = models.ForeignKey(User)
当我将ModelForm传递给模板时,会生成一个包含所有行程值的下拉列表。如何让下拉列表仅包含特定登录用户的行程值?
答案 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)