Загрузка файла csv и присвоение его пользователю - django
Я хочу создать проект и мне нужно загрузить csv файл пользователю, но по какой-то причине он не загружается правильно (загружается для первого созданного пользователя, а я пытаюсь сделать это с других учетных записей).
На мой взгляд, получается что-то вроде этого:
def FileViewUpload(request):
form = CsvFileForm(request.POST, request.FILES)
print(request.user)
userId = request.user.id
print(userId)
print(request.user.email)
if form.is_valid():
form.save()
form = CsvFileForm()
obj= CsvFileModel.objects.get(activated=False)
with open(obj.file_name.path, 'r') as f:
reader = csv.reader(f)
for i, row in enumerate(reader):
if i==0:
pass
else:
date = row[0]
user = AccountUser.objects.get(contact_user = userId)
print(user)
ContactUser.objects.create(
date=date,
message= row[1]
user=user,
)
obj.activated=True
obj.save()
return render(request, 'uploadFile.html', {
'importFile': form
})
Для этих строк:
print(request.user)
print(userId)
print(request.user.email)
он отображает хорошую вещь, правильный id и email для этого конкретного пользователя. Но когда я нажимаю кнопку для загрузки, он загружается в поле для первого созданного пользователя.
Проблема, я думаю, в этой строке: user = AccountUser.objects.get(contact_user = userId)
, но я не знаю почему, если в начале, при первых отпечатках, он показывает мне правильно.
Модель для ContactUser:
class ContactUser(models.Model):
user = models.ForeignKey(AccountUser, related_name='contact_user', on_delete=models.CASCADE)
date = models.CharField()
message = models.CharField()
def __str__(self):
return f"{self.user}"
линия:
user = AccountUser.objects.get(contact_user = userId)
выполняется снова и снова для каждого ряда, но он не меняется для каждого ряда. Вы имеете в виду захват ID из строки в CSV? Вы устанавливаете userId
перед циклом для пользователя, который в данный момент делает запрос.
Я подозреваю, что вы нацелены на что-то вроде следующего (строка[0] будет зависеть от того, есть ли у вас вообще id в файле csv - это мое предположение, то есть в первом столбце csv):
user = AccountUser.objects.get(contact_user__user_id = row[0])
Я решаю эту проблему, используя user = AccountUser.objects.get(id = userId)