2016-08-21 4 views
0


データをデータベースに追加するためのフォームがあり、ドロップダウンメニューで外部キーの選択を制限したい。それは私のfinishDateフィールドで制限する必要があります。 finishDateが今日より前の日付(たとえば、今日は21-08-2016、finishDateは30-06-2013)の場合、そのfinishDateの外部キー値を表示したくありません。これを行う最も簡単な方法は何ですか?私はこれで相対的に新しいので、私は助けが必要です。Django - データタイムフィールドに応じてドロップダウンメニューで外部キーの選択を制限する方法

models.py

class Account(models.Model): 
    startDate = models.DateField(verbose_name="Start") 
    finishDate = models.DateField(verbose_name="Finish") 

    def __str__(self): 
     return 'A{}'.format(self.id) 

class Net(models.Model): 
    date = models.DateTimeField(default=datetime.now()) 
    MB = models.IntegerField(validators=[MinValueValidator(1)],default=randint(100,2000)) 
    idAccount = models.ForeignKey(Account, on_delete=models.CASCADE, verbose_name="Account") 

    def __str__(self): 
     return 'Record {}'.format(self.datum) 

forms.py

class NetForm(ModelForm): 
    class Meta: 
     model = Net 
     fields = ['idAccount'] 

views.py

@login_required(login_url="/accounts/login/") 
def net(request): 
    if request.method == 'POST': 

     form = NetForm(request.POST) 

     if form.is_valid(): 
      internet = form.save() 
      return HttpResponseRedirect('/') 

    else: 
     form = NetForm() 

    return render(request, 'project/Net.html', {'form': form}) 

どうもありがとう!

答えて

2

あなたはそれが動作する__init__

import datetime 

def NetForm(forms.ModelForm): 
    #...fields 
    def __init__(self, *args, **kwargs): 
     super(NetForm, self).__init__(*args, **kwargs) 
     # Now set the queryset... 
     self.fields['idAccount'].queryset = Account.objects.filter(finishDate__gte=datetime.datetime.now()) 
+0

でそれをフィルタリングすることができます!どうもありがとう!!! – notGenius

関連する問題