Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅允许ForeignKey选择用户值_Python_Django - Fatal编程技术网

Python 仅允许ForeignKey选择用户值

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

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

比如说,

Models.py

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'
更改为您指定的相应字段名