Задать вопрос
nmkru
@nmkru
beginner python programmer

Какой тип поля для виджета лучше использовать в форме с моделью для изображений?

Подскажите какой тип поля для виджета формы связанной с моделью лучше использовать, при создании формы добавления изображения в модель. Пробовал использовать
forms.FileInput(attrs={"class": "form-control"})
, но не работает. Надо чтобы картинка через виджет добавлялась в базу. С title и content все работает хорошо, а с photo не хочет, в чем пробелема?

Файл формы:
from django import forms
from .models import AllMovies

class MoviesForm(forms.ModelForm):
	class Meta:
		model = AllMovies		
		
		fields = ['title', 'content', 'photo', 'is_published', 'category']
		widgets = {
			'title': forms.TextInput(attrs={"class": "form-control"}),
			'content': forms.Textarea(attrs={"class":"form-control", "rows": 5}),
			'photo': forms.FileInput(attrs={"class": "form-control"}),
			'category': forms.Select(attrs={"class": "form-control"}),
		}


Файл основной модели:
class AllMovies(models.Model):
	title = models.CharField(max_length=255, verbose_name='Название фильма')
	content = models.TextField(blank=True, verbose_name='Описание')
	photo = models.ImageField(upload_to="photos/%Y/%m/%d/", verbose_name='Фото', blank=True)
	time_create = models.DateTimeField(auto_now_add=True, verbose_name='Создание записи')
	time_update = models.DateTimeField(auto_now=True, verbose_name="Обновление записи")
	is_published = models.BooleanField(default=True, verbose_name="Опубликовано")
	category = models.ForeignKey('Category', on_delete=models.PROTECT, null=True, verbose_name='Категории')
	
	def get_absolute_url(self):
		return reverse('v_movies', kwargs={'movie_id': self.pk})
	
	def __str__(self):
		return self.title
	
	class Meta:
		verbose_name = 'Фильм'
		verbose_name_plural = 'Фильмы'
		# сортировка статей по дате создания, если будут одинаковые даты, то по названию
		ordering = ['time_create', 'title']


Вьюха:
def add_movies(req):
	if req.method == 'POST':	
		form = MoviesForm(req.POST)
		
		if form.is_valid():		
			new_movie = form.save()
			
			# возвращаем страницу созданной только что формы
			return redirect(new_movie)
	else:		
		form = MoviesForm()
	return render(req, template_name='movies/add_movie.html', context={'form': form})
  • Вопрос задан
  • 37 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы