0

In django, let's say I have a model with an integerfield called "RouteNumber" in my model. I manage all the model entries in the django admin site and I want to assign a route number to more than 100 entries at a time. How can I do that based on a user input? I was thinking using an admin action that would request a number and that all the queryset would be assigned this value

In my model.py:

class Person(models.Model):

    Name = models.CharField("Nom du parent", max_length=40, default="")
    RouteNumber= models.IntegerField("Numéro de route", default=None, blank=True, null=True)

In my admin.py:

def assign_route_number(self, obj):
    # This is where I'm lost ====
    number = user_input("Enter a route number")
    # ========

    for obj in queryset:
        obj.RouteNumber = number
        obj.save()

However I don't know how to get the user input. Is there an easy way to get that?

Thank you for your answers

Faisal Manzer
  • 2,089
  • 3
  • 14
  • 34
Moose1231
  • 9
  • 4
  • [See this answer](https://stackoverflow.com/questions/25233840/how-can-i-ask-for-user-input-with-an-action-in-django-admin) to take input in Admin Action. – Faisal Manzer Nov 18 '19 at 09:36
  • I am not sure how to implement it. Do I have to setup something in my views.py file and link it to a url? For some reason when I render a html from my admin.py nothing happens – Moose1231 Nov 18 '19 at 14:54

1 Answers1

0
# If you want to get data in admin.py while saving it. You can use 'save_model' method

def save_model(self, request, obj, form, change):
    route_number = request.POST.get('RouteNumber')
    if change == False:
        # add form save changes
        pass
    else:
        # edit form save changes    
    super().save_model(request, obj, form, change)
Mukul Kumar
  • 2,033
  • 1
  • 7
  • 14