Как сделать выпадающий выбор в поле CreateView - Django
я добавляю новое поле (location) в PostCreateView
и я хочу иметь возможность выбрать это поле, если оно уже есть в базе данных. (например, Нью-Йорк)
он отображается, но очевидно, что это не выпадающий список.
views.py
class PostCreateView(LoginRequiredMixin, CreateView):
model = Post
fields = ['title', 'content', 'location']
success_url = '/'
models.py
class Location(models.Model):
location = models.CharField(max_length=100)
def __str__(self):
return self.location
def get_absolute_url(self):
return reverse('home')
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
location = models.CharField(max_length=100, default="")
def total_likes(self):
return self.likes.count()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk': self.pk})
Я пытался добавить это
widgets= {
'location': forms.Select(attrs={'class': 'form-control'})
}
прямо под моим классом PostCreateView, но я думаю, что это не работает, поскольку я не использую forms.py, а вместо этого использую класс PostCreateView внутри views.py
В вашем models.py файле компонент location должен быть ForeignKey. В этом случае ваша модель должна выглядеть следующим образом:
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
location = models.ForeignKey(Location, on_delete=models.CASCADE)
Когда вы добавляете это поле в свою форму или определяете поля из CreateView оно будет отображаться как выпадающее.