#python-3.x #django
#python-3.x #django
Вопрос:
Я пытаюсь создать веб-приложение, которое имеет модели для каждого пользователя. При входе в систему как пользователя без текущих моделей создается новая модель для этого пользователя. Проблема в том, что вместо вставки новой модели она обновляет существующую модель. Модель имеет 3 поля: user, name и value . при входе в систему логика проверяет, есть ли в ней значения модели с именем пользователя, и если их нет, то она создает новую модель или должна. Но в настоящее время он просто обновляет все строки, чтобы связать их с пользователем, который только что вошел в систему. Это мой код для создания новой модели, которая вызывается, когда пользователь, у которого нет связанной с ним модели, входит в систему и когда пользователь хочет сбросить там модель.
ПРАВКА 1: добавлен формат модели
#if there is no models associated with user/ recreate the model is called
Board.object.filter(user=user).delete();
#create the new model
for row in page_data.get("rows"):
for name, value in row.items():
Board(user=user, name=name, value=value).save()
class Board(models.Model):
name = models.CharField(max_length = 2, primary_key=True)
value = models.CharField(max_length = 6)
user = models.ForeignKey(User, on_delete = models.CASCADE)
class Meta:
unique_together = (("user", "name", "value"))
Комментарии:
1. Можете ли вы поделиться своим
Board
определением модели в своемmodels.py
?2. @BernardoDuarte сделал
3.
name
является первичным ключом вашей модели (по какой-то причине я не знаю. Я бы посоветовал не создавать такие столбцы в качестве первичного ключа, имя подразумевает, что его можно изменить, поэтому это не очень хороший первичный ключ). Когда вы пишетеBoard(user=user, name=name, value=value).save()
, Django видит, что объекту присвоено значение pk, поэтому он сначала пытается обновить таблицу, в которой pk является заданным значением (здесь это обновление выполняется успешно), если обновление завершается неудачно, Django сохраняет новую запись в базе данных.