2017-05-07 5 views
0

私はListingというモデルがあります。これは基本的にユーザーが投稿した求人リストです。フィールドの1つは、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

は申し訳ありませんが、ファイルのように、私はこれを追加する何かをしてみてください私の見解は? – ng150716

+0

はい、結果をhtmlファイルに送信したい場合 – Exprator

+0

ごめんなさい。私たちは間違いを犯してから学ぶだけです。でも私はたくさんのことを知っていません。私も問題に直面したときに学ぶ。 – Exprator