簡體   English   中英

Django-如何根據數據時間字段限制下拉菜單中的外鍵選擇

[英]Django - How to restrict foreign key choices in dropdown menu depending on datatime field


我有在數據庫中添加數據的表單,我想在下拉菜單中限制外鍵選擇。 它必須限制在我的finishDate字段中。 如果finishDate是今天之前的日期(例如今天是21-08-2016,而finishDate是30-06-2013),那么我不想顯示該finishDate的外鍵值。 最簡單的方法是什么? 我在這個方面還比較陌生,所以我需要幫助。

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)

表格

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})

非常感謝!

您可以在__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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM