Django Admin添加动态列表并删除操作

时间:2016-06-13 09:07:21

标签: django django-admin

我有2个型号,Car and Driver:

class Driver(models.Model):
   name = models.TextField(max_length=50)
   diverText = models.TextField(max_length=300)
   car = models.ForeignKey(Car, default="", null=True, blank=True)

class Car(models.Model):
   name = models.TextField(max_length=300)
   model = models.TextField(max_length=300)

在我的Django管理员中,我添加了一个动作,向我显示下拉列表中的所有车辆列表,这样我就可以批量分配给特定车辆的车辆:

def create_action(car):
   def action(modeladmin, request, queryset): queryset.update(car=car)
   name = "mark_%s" % (car.name,)
   return name, (action, name,format(car.name +" "+ car.model ,))

class DriverAdmin(admin.ModelAdmin):
   list_display = ('driver_name', 'driverText',  'car')

   def get_actions(self, request):
      return dict(create_action(q) for q in Car.objects.all())

   def driver_name(self, instance):
      return instance.driver.name

admin.site.register(Driver, DriverAdmin)

问题: 我希望能够删除管理员中的一个或多个驱动程序,但是当我添加上述操作时,默认删除选项将从选择框中消失。如果在覆盖方法中添加删除操作,则assign action将再次消失。我尝试了几种方法来添加它,但没有运气。我如何保留这两种方法?

1 个答案:

答案 0 :(得分:0)

你试过这个吗?

def get_actions(self, request):
    actions = super(DriverAdmin, self).get_actions(request)
    return actions, dict(create_action(q) for q in Car.objects.all())