繁体   English   中英

Django外键下拉过滤器

[英]Django Foreign Key Dropdown Filter

我有一个称为Listing的模型,它基本上是我的用户发布的工作清单。 字段之一是称为地址的外键(因为用户可以有多个地址)。 这是我的models.py:

class JobListing(models.Model):
    title = models.CharField(max_length=250)
    description = models.TextField()
    customer = models.ForeignKey('CustomerAuth.CustomerProfile')
    address = models.ForeignKey('CustomerAuth.Address')

这是我的forms.py:

class JobListingForm(forms.ModelForm):
    class Meta:
        model = JobListing
        fields = ['title', 'description', 'address', 'customer']

最后是我的views.py的相关部分:

def create_listing(request):
    form = JobListingForm(request.POST or None)

    if form.is_valid():
        listing = form.save(commit=False)
        listing.save()

        current_user = CustomerProfile.objects.get(user=request.user)
        listing.customer = current_user
        listing.save()

        return HttpResponseRedirect('/listings/id/%s' % listing.id)

    context_dict = {'form': form}
    return render(request, 'listing/create-listing.html', context_dict)

按照目前的状态,当用户从下拉菜单中选择一个地址时,它将显示每个人的地址。 无论如何,我可以对其进行过滤,以便仅显示该用户输入的地址。

尝试这样的事情

model1.objects.get(pk=1).model2_set.all() 

表格

class JobListingForm(forms.ModelForm):
    class Meta:
        model = JobListing
        fields = ['title', 'description', 'address', 'customer']

    def __init__(self, user, *args, **kwargs):
    super(JobListingForm, self).__init__(*args, **kwargs)
    self.fields['address'].queryset = Address.objects.filter(user=user)

在您的视图文件中

def create_listing(request):
    user = request.user
    form = JobListingForm(user, request.POST or None) #pass request.user

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM