我有一個模型Jar
,它有一個crate
屬性 - 一個ForeignKey
到一個Crate
模型。 Crate
模型具有capacity
屬性(它可以容納的罐子的數量)和jars
屬性(它當前擁有的罐子的數量),它是這一行:return self.jar_set.filter(is_active=True).count()
。管理員動作的中間頁面上的動態下拉列表
我有一個管理員操作,將多個罐子移動到一個新的箱子。它使用中間頁面來選擇目標箱。現在所有箱子都列在下拉列表中,但是我想將列出的箱子限制爲只有那些有空間的人才能選擇所選的瓶子數量。怎麼樣?
下面是admin.py
管理員操作:
class MoveMultipleJarsForm(forms.Form):
# This needs to somehow be restricted to those crates that have room
dest = forms.ModelChoiceField(queryset=Crate.objects.all().order_by('number'))
def move_multiple_jars(self, request, queryset):
form = None
if 'apply' in request.POST:
form = self.MoveMultipleJarsForm(request.POST)
if form.is_valid():
dest = form.cleaned_data['dest']
count = 0
for jar in queryset:
jar.crate = dest
jar.save()
count += 1
plural = ''
if count != 1:
plural = 's'
self.message_user(request, "Successfully moved %d jar%s to %s" % (count, plural, dest))
return HttpResponseRedirect(request.get_full_path())
if not form:
form = self.MoveMultipleJarsForm()
return render(request, 'admin/move_multiple_jars.djhtml', {
'jars': queryset,
'move_multiple_jars_form': form,
})
move_multiple_jars.short_description = "Move multiple jars to new crate"