Загрузка файла 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)

Вернуться на верх