我想获取一个随机的对象列表并将其用作表单字段的查询集。但既然它是一个列表而不是查询集,这将无法工作。一位朋友建议为此使用经理。但现在我不太确定从哪里开始。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
好点我忘了那一个。但就如你所见,我不太清楚如何解决这个问题。 –