У меня есть следующая модель в проекте:
class CarAssignment(models.Model):
leg = models.ForeignKey(Leg, null=True, blank=True)
driver = models.ForeignKey(Driver, null=True, blank=True)
riders = models.ManyToManyField(Rider, null=True, blank=True)
Я пытаюсь создать страницу с таблицей, в которой пользователь-администратор может редактировать элементы водителя и гонщиков для всех назначений автомобилей в определенной группе. Я не могу использовать набор форм, потому что мне также нужно добавить данные из другой модели, а также потому, что выбор в каждом списке происходит из другого подгруппы гонщиков и гонщиков, принадлежащих к определенной группе. Драйвер - это список выбора, а Riders - список с несколькими вариантами выбора.
Я успешно построил страницу и таблицу для представления данных с правильно работающими выпадающими списками. Тем не менее, я не могу понять, как сохранить предметы. Вот конкретный сценарий проблемы:
для строки 1 в таблице (представляющей объект CarAssignment # 1), я выбираю новый драйвер из списка в выпадающем списке выбора. Я назначаю собственные теги имен в html для их идентификации следующим образом:
<option selected name="select.driver.{{ car_assignment.id }}">{{ driver }}</option>
Затем в представлении я пытаюсь проверить, соответствует ли оно чему-либо, следующим образом:
for car_assignment in CarAssignment.objects.filter(leg__in=legs):
driver_tag = "select.driver." + str(car_assignment.id)
if driver_tag in request.POST:
car_assignment.driver = driver
car_assignment.save()
Проблема в том, что когда он находит соответствующий тег драйвера, все, что он возвращает, это строка имени и фамилии. Я не могу сделать car_assignment.driver = driver, потому что он пытается приравнять объект драйвера к строке.
Я не уверен, как это сделать. Я думаю, я мог бы разобрать имя и фамилию и попытаться сопоставить их с моделью драйвера, чтобы получить нужные мне объекты драйвера, но это кажется неэффективным и, возможно, подверженным ошибкам.
Любая помощь приветствуется (я программист и новичок в Django). Благодаря.