Как вставить элемент в поле с помощью Django - PullRequest
0 голосов
/ 25 февраля 2019

Как лучше всего вставить переменную в поле в django, аналогично вставке элемента в список в python.

Я не пытаюсь обновить поле записи "first_name" в базе данных, а скорее "вставить" или "добавить" второе "first_name" от кого-то еще в базе данных, которая имеет ту же фамилию.

Пример:

First Name      Last Name
    Alan            Smith
    Eric            Jones
    Inna            Smith

Результат:

First Name         Last Name
    Alan, Inna      Smith, Smith
    Eric            Jones

Я использую PostgreSQL в качестве базы данных.

Любая помощь будет принята с благодарностью.Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Это то, что я придумал.Надеюсь, это поможет.

to_delete = []
for person in Person.objects.all():
    # all people sharing a last name with person
    matches = Person.objects.filter(last_name=person.last_name)

    # a list with the first names
    first_names = matches.values_list('first_name', flat=True)
    # a list with the last names
    last_names = matches.values_list('last_name', flat=True)

    # Join them with comma as a separator e.g 'Alan, Inna'
    joined_fnames = ', '.join(first_names)
    joined_lnames = ', '.join(last_names)

    # set the new joined strings as persons new values
    person.first_name = joined_fnames
    person.last_name = joined_lnames

    # get the other record ids that have already been joined into person and add to to_delete
    ids = matches.exclude(id=person.id).values_list('id', flat=True)
    to_delete += ids

    person.save()

# finally delete all records in to_delete
Person.objects.filter(id__in=to_delete).delete()
0 голосов
/ 25 февраля 2019

Вы можете попробовать это с ArrayField link

...