У меня есть веб-приложение django, где я хочу, чтобы пользователи загружали свои данные в виде csv. Я создал функцию и страницу, где пользователь загружает CSV, и я добавил пользователя к модели, но я хочу, чтобы этот пользователь был внешним ключом для каждого из файлов. Из того, что я вижу, данные вводятся в базу данных просто отлично, но я не думаю, что они правильно связаны с внешним ключом, потому что при анализе базы данных он говорит, что внешние ключи не подключены, и просто вводится значение с никакого отношения не имеет.
Вот моя функция:
def upload_batch(request):
template_name = 'classroom/teachers/upload.html'
prompt = {'order':'Order of csv should be first_name, last_name, email, ip_address, message'}
if request.method == "GET":
return render(request,template_name,prompt)
csv_file = request.FILES['file']
data_set = csv_file.read().decode('UTF-8')
io_string = io.StringIO(data_set)
next(io_string)
uploaded_by = request.user
for column in csv.reader(io_string,delimiter=',',quotechar='|'):
_, created = ItemBatch.objects.update_or_create(
name = column[0],
pid = column[1],
quantity = column[2],
length = column[3],
width = column[4],
height = column[5],
volume = column[6],
weight = column[7],
uploaded_by = uploaded_by
)
context = {}
return render(request,template_name,context)
Вот моя модель:
# item upload
class ItemBatch(models.Model):
# uploaded_by = models.ForeignKey(Teacher, on_delete=models.CASCADE, related_name='uploaded_by')
uploaded_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name='uploaded_by')
name = models.CharField(max_length=30)
pid = models.CharField(max_length=30)
quantity = models.CharField(max_length=30)
length = models.CharField(max_length=100, blank=True)
width = models.CharField(max_length=100, blank=True)
height = models.CharField(max_length=100, blank=True)
volume = models.CharField(max_length=100, blank=True)
weight = models.CharField(max_length=100, blank=True)
def __str__ (self):
return self.name
ОБНОВЛЕНИЕ: Вот скриншот модели в моей базе данных. Как вы можете видеть, uploaded_by
не отображается как внешний ключ, как это показано в другой рабочей модели.
Моя модель в базе данных:
Вкладка внешнего ключа пуста.
Моя другая рабочая модель с FK.