Сохранение названия страны из поля страны - PullRequest
0 голосов
/ 20 июня 2019

Мне нужно поле выбора страны в моей форме, мои models.py:

class ContactForm(models.Model):
    first_name = models.CharField(max_length=10)
    Country = models.CharField(max_length=10)

И мои forms.py:

from django_countries.fields import CountryField

class UserContact(forms.Form):
   first_name = forms.CharField(label='your first name', max_length= 10)    
   country = CountryField().formfield()

Мои просмотры:

def get_data(request):

      form = UserContact()
      if request.method == 'POST':
             form =  UserContact(request.POST)
             if form.is_valid():
                    ContactForm.objects.create(**form.cleaned_data)
                    return render(request, '# some url', { 'form': form}

Моя проблема в том, что когда я отправляю форму на моей странице администратора в моей модели ContactForm, у меня есть имя, которое я ввел, и только код страны!Не полное название страны.Я не знаю, как это сделать.Но я знаю, что могу получить название страны в оболочке, используя:

>>>from django_countries import countries      
>>>dict(countries)['NZ'] 
>>>'New Zealand'

Так, например, мне нужно, чтобы Новая Зеландия была сохранена в моей базе данных, а не в Новой Зеландии.

1 Ответ

0 голосов
/ 20 июня 2019

Рекомендуется сохранить код страны вместо названия страны.Итак, измените свою модель, как показано ниже

models.py

from django.db import models
from django_countries.fields import CountryField

class ContactForm(models.Model):
    first_name = models.CharField(max_length=10)
    country = CountryField()

forms.py

from django_countries.fields import CountryField

class UserContact(forms.Form):
   first_name = forms.CharField(label='your first name', max_length= 10)
   country = CountryField().formfield()

После сохранения формы вы можете получить доступ к названию страны, как показано ниже

obj = ContactForm.objects.get(pk=10) # some random pk
print(obj.country.name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...