#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]
Я хочу сделать это:
- Если этих чисел не существует, создайте новое.
- Если пользователь обновит номер , скажем, с 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()