Django: Объект NoneType' не имеет атрибута 'user' ошибка
У меня есть две модели:
МОДЕЛЬ
class File(models.Model):
user = models.ForeignKey(Profile, on_delete=models.CASCADE)
filename = models.CharField(max_length=250)
file_upload = models.FileField(upload_to=path)
upload_date = models.DateField(default=datetime.now)
def __str__(self):
return self.user.name + 'file'
class Dataset(models.Model):
user = models.ForeignKey(Profile, on_delete=models.CASCADE)
file_uploaded = models.OneToOneField(File, on_delete=models.CASCADE)
name_user_A = models.CharField(max_length=250)
code_user_A = models.PositiveIntegerField(null=True)
total_user_A = models.PositiveIntegerField(null=True)
sd_user_A = models.PositiveIntegerField(null=True)
name_user_B = models.CharField(max_length=250)
code_user_B = models.PositiveIntegerField(null=True)
total_user_B = models.PositiveIntegerField(null=True)
sd_user_B = models.PositiveIntegerField(null=True)
В модели File нужно загрузить файл csv, а затем сохранить информацию в файле в модели Dataset. После этого я хочу показать пользователю некоторую диаграмму, поэтому мне нужно, чтобы модели File и Dataset были связаны. Вот мое представление:
ПРОСМОТРОВ
def file_upload(request):
data = None
if request.method == 'POST':
form = FileForm(request.POST, request.FILES)
raw_file= request.FILES
if form.is_valid():
form.instance.user = request.user.profile
form.instance.filename = raw_file['file_upload'].name
form.save()
data = request.FILES['file_upload']
data = pd.read_csv(data, header=0, encoding="UTF-8")
data_form.instance.user = request.user.profile
Dataset.objects.create(
name_user_A = data.iloc[0,1],
name_user_B = data.iloc[1,1],
[...]
)
return redirect('upload_file')
else:
return redirect('home')
else:
form = FileForm()
context = {
'data': data,
'form': form,
}
return render(request, 'upload_file.html', context)
Когда я пытаюсь получить доступ к базе данных Dataset в области администратора, я получаю эту ошибку: 'NoneType' object has no attribute 'user'
.
Я также не могу получить доступ к html-странице с результатами и графиком, потому что получаю эту ошибку: Dataset matching query does not exist.
Вот вид и код url, как я достигаю html-страницы
def results(request, id):
results = File.objects.filter(user=request.user.profile).filter(pk=id)
context = {
'results': results
}
return render(request, 'results.html', context)
urlpatterns = [
path('chart/<id>', views.results, name="file"),
]
Может ли кто-нибудь любезно помочь мне и объяснить, как я могу исправить мой код? Спасибо