Форум сайта python.su
models.py
class Location(models.Model): name = models.CharField(max_length=100, verbose_name=u"Локация", default=u'') country = models.ForeignKey("Country") class Country(models.Model): name = models.CharField(max_length=50, verbose_name=u"Страна") class Photo(models.Model): location = models.ForeignKey(Location, null=True, verbose_name=u'Фото') photo = models.ImageField(upload_to='photos', null=True)
class LocationForm(forms.ModelForm): class Meta: model = Location fields = ['name', 'country'] photos = MultiFileField(min_num=1, max_num=10) def save(self, commit=True): instance = super(LocationForm, self).save(commit) for each in self.cleaned_data['photos']: Photo.objects.create(photo=each, location=instance) return instance
class AddLocationPageView(CreateView): model = Location form_class = LocationForm template_name = 'add_location.html' class BrowseLocationsPageView(ListView): model = Country context_object_name = 'countries' template_name = "browse_locations.html"
<form action="" method="POST">{% csrf_token %}
{{ form|crispy }}
<button class="btn btn-default" type="submit">Add</button>
</form>
{% for country in countries %} {{ country }} {% endfor %}
Офлайн
А у вас в форме нет никакого поля для создания локации. У вас только селект, как же вы создадите то?
Тут лучше всего действовать аяксом: создаете страну, асинхронно передаете её на сервер и возвращаете json-представление страны, которое всовываете в селект. Это совсем немного кода на jquery.
Офлайн
FishHookКак это нет поля создания локации? что-то Вы не поняли… моя форма состоит из двух полей - название Локации и Страна… так вот Страна требует чойса.. а мне надо чтобы она не требовала чойса, а создавала Страну с привязкой к Локации или если есть такая страна, то просто привязывала
А у вас в форме нет никакого поля для создания локации. У вас только селект, как же вы создадите то?Тут лучше всего действовать аяксом: создаете страну, асинхронно передаете её на сервер и возвращаете json-представление страны, которое всовываете в селект. Это совсем немного кода на jquery.
Офлайн
DenzilФорму вы создаете на основании модели, страна в модели - это ссылка на первичный ключ другой модели.
Как это нет поля создания локации? что-то Вы не поняли… моя форма состоит из двух полей - название Локации и Страна
class LocationForm(forms.ModelForm): class Meta: model = Location fields = ['name', 'country'] photos = MultiFileField(min_num=1, max_num=10) new_country_name = forms.Charfield() def save(self, commit=True): instance = super(LocationForm, self).save(commit) for each in self.cleaned_data['photos']: Photo.objects.create(photo=each, location=instance) return instance
Офлайн
Спасибо! до меня дошло я просто надеялся на магию ))
Офлайн