Найти - Пользователи
Полная версия: modelformset_factory, как правильно сделать?
Начало » Django » modelformset_factory, как правильно сделать?
1
eboome
Здраствуйте! Никак не могу сделать так, что б клиент мог загрузить 5 картинок:
Вот модель:
class Photo(models.Model):
    equipment=models.ForeignKey(Equipment, blank=True, null=True, on_delete=models.SET_NULL)
    photo=models.ImageField(upload_to='/path')
    
    class Meta:
        db_table='equipment_photos'
        verbose_name_plural = 'equipment_photos'

вот вюшка:
class CreateEquipmentPhotoView(CreateView):
    form_class=EquipmentPhotoFormSet
    template_name='equipment/add_photo.html'
    
    def get_form_kwargs(self, *args,  **kwargs):
        kwargs = super(CreateEquipmentPhotoView, self).get_form_kwargs()
        kwargs['pk'] = self.kwargs['pk']
        kwargs['request'] = self.request
        return kwargs
    
    def get_queryset(self):
        return Photo.objects.filter(equipment__owner=self.request.user)
    
    def get_success_url(self):
        return reverse_lazy('galary')

вот форма:
EquipmentPhotoFormSet=modelformset_factory(Photo, extra=5)

но ни в какую(
FishHook
Нифига не понял. В модели ОДНО поле для изображения. Как вы хотите одним реквестом создать ПЯТЬ объектов, при этом не написав ни строчки дополнительного кода? Видимо надо из реквеста получить пять изображений и в цикле создать пять соответствующих объектов.
eboome
FishHook
Нифига не понял. В модели ОДНО поле для изображения. Как вы хотите одним реквестом создать ПЯТЬ объектов, при этом не написав ни строчки дополнительного кода? Видимо надо из реквеста получить пять изображений и в цикле создать пять соответствующих объектов.
мне нужно:
equipment1 - 1.png
equipment1 - 2.png
equipment1 - 3.png.

вся суть проблемми в том что нужно 5 раз продублировать форму. В доке написаног что нужно юзать modelformset_factory. Но как звязать modelformset_factory с вюшкой и сохранить данные не знаю, так как в доке етого нет.
Создавать 5 полей в форме не вариант
GreyZmeem
CreateView не умеет работать с FormSet. Если вы хотите использовать CBV - то попробуйте django-extra-views
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB