I am trying to dynamically build a list of admin actions using the get_actions()on method ModelAdmin. Each action refers to a specific instance of another model, and since new instances can be added or removed, I want to make sure that the list of actions reflects this.
Here ModelAdmin:
class PackageAdmin(admin.ModelAdmin):
list_display = ('name', 'quality')
def _actions(self, request):
for q in models.Quality.objects.all():
action = lambda modeladmin, req, qset: qset.update(quality=q)
name = "mark_%s" % (q,)
yield (name, (action, name, "Mark selected as %s quality" % (q,)))
def get_actions(self, request):
return dict(action for action in self._actions(request))
(The strange duplicate return value of tuples is explained by Django docs forget_actions() .)
As expected, this leads to a list of the corresponding administrator action names for the mass assignment of foreign keys Qualityfor objects Package.
, , , Quality Package s.
, , lambda, q, q .
, , q?
: , lambda . :
action = lambda modeladmin, req, qset: qset.update(quality=q)
def:
def action(modeladmin, req, qset):
return qset.update(quality=q)