Python 仅允许ForeignKey选择用户值
我正在尝试构建一个表单,用户可以从下拉菜单中选择一个外键。但是,我似乎找不到一种方法将foreignkey值限制为与登录用户关联的值 比如说, Models.pyPython 仅允许ForeignKey选择用户值,python,django,Python,Django,我正在尝试构建一个表单,用户可以从下拉菜单中选择一个外键。但是,我似乎找不到一种方法将foreignkey值限制为与登录用户关联的值 比如说, Models.py class Site(models.Model): trip = models.ForeignKey(Trip) user = models.ForeignKey(User) 当我将ModelForm传递给模板时,将生成一个包含所有trip值的下拉列表。如何使下拉列表只包含特定登录用户的行程值?您可以这样做: cla
class Site(models.Model):
trip = models.ForeignKey(Trip)
user = models.ForeignKey(User)
当我将ModelForm传递给模板时,将生成一个包含所有trip值的下拉列表。如何使下拉列表只包含特定登录用户的行程值?您可以这样做:
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)
您可以这样做:
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)
将
'trip'
更改为您指定的相应字段名将'trip'
更改为您指定的相应字段名