学生が選んだカテゴリに応じたすべてのオブジェクトを表示するページがあります。オブジェクトを異なるページに分割するために、サイトにページネーションを実装しました。
この問題は、学生がドロップボックスからカテゴリを選択し、新しいエントリと古いエントリのページネーションをフリックしようとしたときに発生します。
これが発生する理由は、ユーザーがドロップボックスからカテゴリを選択するたびに、オブジェクトを取得するとドロップボックスがリセットされるためです。そのため、ユーザーがページネーションを使用してオブジェクトをフリックしようとすると. ドロップボックスのカテゴリがリセットされ、ユーザーが空白のページにリダイレクトされるため、ページネーションは取得するデータを認識していません。
これに対する解決策は、ドロップボックスがユーザーの選択に対して静的なままになるようにプログラムすることです。これにより、ユーザーがページネーションによって分割されたデータをフリックすると、ページネーションがドロップボックスに従ってオブジェクトを取得できることがわかります。
ユーザーの選択に対してこのドロップボックスを静的なままにする方法がわかりません。
私のviews.py
def BoardFinder(request):
form = BoardFinderForm(request.POST)
fo = BoardFinderForm()
if form.is_valid():
Category = form.cleaned_data['Category']
posts = Board.objects.filter(Category=Category)
paginator = Paginator(posts, 1)
try: page = int(request.GET.get("page", '1'))
except ValueError: page = 1
try:
posts = paginator.page(page)
except (InvalidPage, EmptyPage):
posts = paginator.page(paginator.num_pages)
return render(request,"boardfinder.html",{"posts":posts,"fo":fo})
return render(request,"boardfinder.html",{"fo":fo})
私のモデル.py
class Board(models.Model):
MATH = 'MATH'
ENGLISH = 'ENGLISH'
SCIENCE = 'SCIENCE'
LANGUAGE = 'LANGUAGE'
CATEGORY = (
(MATH, 'Math'),
(ENGLISH, 'English'),
(SCIENCE, 'Science'),
(LANGUAGE, 'Language'),
)
Category =models.CharField(max_length=30,choices=CATEGORY)
user = models.ForeignKey(User)
name = models.CharField(max_length=100)
created = models.DateTimeField(auto_now_add=True)
picture = models.OneToOneField('Picture',related_name='picture',blank=True,null=True)
def __unicode__(self):
return self.name
class BoardFinderForm(forms.ModelForm):
class Meta:
model = Board
fields = ('Category',)
私のboardfinder.htmlの重要な部分
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ fo.as_p }}
<input type = "submit" value= "Find WhiteBoard" />
</form>
{% for post in posts.object_list %}
<div class="title">{{ post.name }}</div>
{% endfor %}