Если вы не хотите изменять значения ключей Primay или не добавляете в таблицу новые объекты, которые могут дублировать старую информацию, - вам нужны какие-то данные, которые вы можете использовать в качестве параметров поиска в вашей базе данных. ,
Если у вас есть модель, которая представляет эти данные, тогда действительно легко использовать
m = Model.objects.get(somecolumn = somedata)
m.someothervalue = someotherdata
m.save()
Но зачем вообще включать в это django? Если у вас есть таблица CSV, то обновление этой информации - действительно случай написания запросов. и такие программы, как Excel и openoffice делают это очень легко.
Если у вас уже есть данные в формате CSV, просто откройте данные в виде электронной таблицы и используйте функцию Concactenate Excels / OpenOffice для создания запросов на обновление
Update mytable set value1 = data1, value2 = data2 where somevalue = somedata;
Если вы использовали для этого openoffice, то в openoffice есть эта изящная функция преобразования текста в столбцы (под данными в меню программы), которая превращает конкатенированные значения в строку. Затем вы можете скопировать эти строки в командную строку или phppgadmin и запустить .. и вуаля, вы получите обновленные данные в вашей базе данных.
Редактировать (В ответ на ваш комментарий.):
Посмотрите на это: https://docs.djangoproject.com/en/dev/ref/models/querysets/#get-or-create
Если вы хотите использовать для этого django, используйте get_or_create. Но вы должны помнить, что если какой-либо из параметров, которые вы используете в методе get_or_create, изменился, то будет создан новый объект. Вот почему я сказал в начале поста, что вам нужны какие-то данные, которые не изменятся.
например (взято по ссылке выше)
obj, created = Person.objects.get_or_create(first_name='John', last_name='Lennon',
defaults={'birthday': date(1940, 10, 9)})
создаст новый объект (Person) при первом использовании. Но если использовать второй раз, а дата изменилась, то будет создан новый человек с тем же именем и фамилией, но с новой датой.
Так что, чтобы избежать этого, вам все равно нужно сделать что-то вроде
obj.someothervalue = someotherdata
obj.save()
если вы хотите иметь больший контроль над данными, это можно было бы изменить.
Алан.