Работа с формами в 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

Что бы получилось примерно так https://i.stack.imgur.com/ebD96.png

Вернуться на верх