Я исправил проблему, и это было с моей базой данных.ArrayField в моей модели ранее был CharField, который я изменил.Я думал, что миграции были правильными, однако база данных все еще считывала его как CharField, поэтому вывод был первым символом строки.Я перешел на новую базу данных, и все работало нормально.Мой код ниже для дальнейшего использования:
models.py
from django.db import models
from django.contrib.postgres.fields import ArrayField
# Create your models here.
class Word(models.Model):
first = models.CharField(max_length=50)
last = models.CharField(max_length=50)
words = ArrayField(models.CharField(max_length=50, null=True))
def __str__(self):
return self.first
views.py
from django.shortcuts import render
from django.views.generic.detail import DetailView
from django.views.generic import CreateView
from .models import Word
# Create your views here.
class ArrayCreateView(CreateView):
model = Word
fields = ['first', 'last']
success_url = '/'
def form_valid(self, form):
w = form.save(commit=False)
random_words = ["word1", "word2", "word3"]
w.words = random_words
return super().form_valid(form)
class ArrayDetailView(DetailView):
model = Word
word_form.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1>Create Array</h1>
<div>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
</div>
</body>
</html>
word_detail.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1>{{ object.words.0 }}</h1>
</body>
</html>
settings.py
INSTALLED_APPS = [
...
'django.contrib.postgres',
'arr',
]
urls.py
from django.contrib import admin
from django.urls import path
from arr.views import ArrayCreateView, ArrayDetailView
urlpatterns = [
path('admin/', admin.site.urls),
path('create/new/', ArrayCreateView.as_view(), name='create'),
path('detail/<int:pk>/', ArrayDetailView.as_view(), name='detail')
]