Django создает или обновляет из списка в модель

#django

Вопрос:

У меня есть эта модель:

 class ring(models.Model):
    size= models.DecimalField(verbose_name='Ring Size', default=0, max_digits=5, decimal_places=1)
 

существующие данные являются:

 [2.2, 2.5, 3.0, 3.2, 4.2, 4.5, 4.8, 5.5, 5.8, 6.0]
 

пользователь отредактировал исходные данные из шаблона и сгенерировал их:

 [2.1, 2.5, 3.0, 3.2, 4.2, 4.5, 4.8, 5.5, 5.7, 6.1, 6.5, 7.5, 8.0, 9.0, 11.0, 13.0, 15.0, 16.0]
 

Я хочу сделать это:

  1. Если этих чисел не существует, создайте новое.
  2. Если пользователь обновит номер , скажем, с 2,2 до 2,1, с 5,8 до 5,7, то просто обновите существующий.

Каков наилучший способ достичь этого ?

Ответ №1:

Я предполагаю, что пользователь вернет полный список в качестве входных данных. В таком случае вам придется извлечь все значения и проверить, обновлены ли некоторые из них, остались ли прежними или добавлены новые. На мой взгляд, это может быть грязно и неоптимально.

Самый простой способ избежать этого-удалить все значения из таблицы и вставить эти новые значения. Поскольку другого поля нет, и в базе данных порядок не имеет значения, он получит те же результаты, что и вы хотите.

В вашем views.py добавьте это в свое представление (valList-это ввод от пользователя):

 ring.objects.all().delete()

for i in range(len(valList)):
    r = ring(size = valList[i])
    if r is not None:
        r.save()