2017-05-07 115 views
0

我有一个名为Listing的模型,它基本上是由我的用户发布的职位列表。其中一个字段是一个名为Address的外键(因为用户可以有多个地址)。这里是我的models.py:Django外键下拉筛选器

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) 

因为它目前为当用户从下拉列表中选择一个地址时,它会显示每个人的地址。无论如何,我可以过滤它,以便只显示该用户输入的地址。

回答

1

forms.py

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 
1

尝试这样的事情

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

对不起,我有点新的Django,我补充这我的看法? – ng150716

+0

是的,你想把结果发送到html文件 – Exprator

+0

不要对不起兄弟。我们犯错误,然后只学习。即使我不知道很多东西。学习当我也面临问题。 – Exprator