我想獲取一個隨機的對象列表並將其用作表單字段的查詢集。但既然它是一個列表而不是查詢集,這將無法工作。一位朋友建議爲此使用經理。但現在我不太確定從哪裏開始。django使用管理器來獲取自定義查詢集
我的函數來獲得「查詢集」的文章:
def get_job_list():
all_jobs = ShortJob.objects.exclude(rarity__exact=0)
always = ShortJob.objects.filter(rarity=0)
pick_list = []
job_list = []
for job in all_jobs:
pick_list.extend([job] * job.rarity)
counter = 0
while counter < 5:
counter += 1
job = choice(pick_list)
job_list.append(job)
while job in pick_list:
pick_list.remove(job)
for job in always:
job_list.append(job)
return job_list
和我的形式:
class ShortJobForm(forms.Form):
options = forms.ModelChoiceField(queryset=ShortJob.get_job_list, widget=forms.RadioSelect)
可有人請點我在正確的方向來解決這個問題
我嘗試到目前爲止重寫功能到管理器:
class ShortJobManager(models.Manager):
""" create a random short job queryset"""
def get_queryset(self):
all_jobs = ShortJob.objects.exclude(rarity__exact=0)
always = ShortJob.objects.filter(rarity=0)
pick_list = []
job_list = []
for job in all_jobs:
pick_list.extend([job] * job.rarity)
counter = 0
while counter < 5:
counter += 1
job = choice(pick_list)
job_list.append(job)
while job in pick_list:
pick_list.remove(job)
for job in always:
job_list.append(job)
return super(ShortJobManager, self).get_queryset(job_list)
好的。我在代碼中看不到任何管理器。 – ElmoVanKielmo
好點我忘了那一個。但就如你所見,我不太清楚如何解決這個問題。 –