Работа с формами в Django
Пытаюсь сделать форму на сайте-проекте таким образом: Есть выпадающий список с вариантами, которые пользователь должен выбрать. Но мне хотелось бы сделать таким образом, что бы если пользователь не находит подходящего для себя критерия, он мог его ввести вручную, в дополнительном поле. И в дальнейшем этот критерий появлялся для других пользователей. Не прошу писать за меня код, просто подскажите какие темы читать в документации.
Вьюха:
def add_friend(request):
if request.method == "POST":
form = AddFriend(request.POST, request.FILES)
if form.is_valid():
MyHouse2.objects.create(**form.cleaned_data)
return redirect("Main")
else:
form = AddFriend()
return render(request, "greeting/add_friend.html", {"form": form})
Модель:
class MyHouse2(models.Model):
who = models.CharField(max_length=20, verbose_name="Кто")
how_old = models.IntegerField(null=True, verbose_name="Сколько лет")
discribe = models.TextField(blank=True, verbose_name="Описание")
work = models.CharField(max_length=20, blank=True, verbose_name="Работа")
hobby = models.CharField(max_length=20, blank=True, verbose_name="Хобби")
photo = models.ImageField(upload_to="photos/", max_length=150, blank=True, verbose_name="Твоё фото")
place = models.ForeignKey("WhoIsFrom", on_delete=models.PROTECT, null=True, verbose_name="Откуда")
navigat = models.ForeignKey("Navigation", on_delete=models.PROTECT,
null=True, blank=True, verbose_name="Описание")
Форма:
class AddFriend(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['place'].empty_label = "Выберите категорию"
class Meta:
model = MyHouse2
fields = ['who', 'how_old', 'discribe', 'work', 'hobby', 'photo', 'place']
widgets = {
'discribe': forms.Textarea(attrs={"class": "form-control", "rows": 1})
}
def clean_who(self):
who = self.cleaned_data["who"]
if len(who) > 10:
raise ValidationError("Твоё имя слишком велико")
return who
Что бы получилось примерно так