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