Получение набора одинаковых идентификаторов нескольких моделей в django

вот мои модели ..

class Log(models.Model):
vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE)
date = models.DateField(default=timezone.now, blank=True, null=True)



class Logsheet(models.Model):
log = models.ForeignKey(Log, on_delete=models.CASCADE, related_name="logsheets")
driver = models.ForeignKey(Driver, on_delete=models.CASCADE, blank=True, null=True)
trip = models.IntegerField(blank=False, null=False)
distance_from = models.FloatField(blank=True, null=True, default=0.0)
distance_to = models.FloatField(blank=True, null=True, default=0.0)
time_from = models.TimeField(blank=False, null=False ,default=timezone.now)
time_to = models.TimeField(blank=False, null=False ,default=timezone.now)
source = models.CharField(max_length=100, blank=True, null=True)
destination = models.CharField(max_length=100, blank=True, null=True)
doeking_km = models.FloatField(blank=True, null=True, default=0.0)

Вот мои представления для создания таблицы журналов

def create_logsheet(request):
drivers = Driver.objects.all()
vehicles = Vehicle.objects.all()

if request.method == "POST":
    vehicle_id = request.POST.get("vehicle")
    vehicle = Vehicle.objects.get(id=vehicle_id)
    date = request.POST.get("date")
    # logsheet data
    trip = request.POST.getlist("trip")
    time_from = request.POST.getlist("time_from")
    time_to = request.POST.getlist("time_to")
    source = request.POST.getlist("source")
    destination = request.POST.getlist("destination")
    distance_from = request.POST.getlist("distance_from")
    distance_to = request.POST.getlist("distance_to")
    driver_id = request.POST.getlist("driver")
    driver = Driver.objects.filter(id__in=driver_id)
    print(driver)
    #main logic
    if vehicle and driver and date:
        log = Log(vehicle=vehicle, date=date)
        log.save()
        data = zip(trip, driver, distance_from, distance_to,time_from, time_to, source, destination)
        for trip,driver, distance_from, distance_to, time_from, time_to, source, destination in data:
            if trip and driver and distance_from and distance_to and time_from and time_to and source and destination:
                logdetail = Logsheet(
                    log=log,
                    trip=trip,
                    driver=driver,
                    distance_from=distance_from,
                    distance_to=distance_to,
                    time_from=time_from,
                    time_to=time_to,
                    source=source,
                    destination=destination,
                )
                logdetail.save()
        return redirect("logsheet_list")

Проблема: Когда мне нужен один и тот же водитель для нескольких поездок, он не создается, а возвращает только один набор запросов, например <QuerySet [<Driver: Mannu R>]>.

Я хотел сохранить одного и того же водителя, который должен сохранять данные из каждой разной поездки.

filter возвращает QuerySet. Вместо этого используйте get.

driver = Driver.objects.get(id=driver_id)

Возможно, вам стоит взглянуть на Django forms. Это должно упростить ваш код.

Вернуться на верх