Предварительно заполненное поле изображения в django форме не работает - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь предварительно заполнить поле изображения в форме django, однако я не могу заставить его работать. Вот что я сделал:

Views.py

class EditUnpublished(TemplateView):
template_name = 'adminpage/editUnpublished.html'

    def get(self, request, id):
        if not is_authenticated(request.user):
            return render(request, template_name_not_authenticated)

        post = Unpublished.objects.get(id=id)
        form = PublishForm(
            {
                'title': post.title,
                'text': post.text,
                'user': post.user,
                'image': post.image.url,
                'users': post.users,
                'tags': post.tags,
                'copyeditor': post.copyeditor,
                'comments': post.comments,
            }
        )
        if not(request.user == post.copyeditor):
             form.fields['comments'].widget.attrs['readonly'] = True

        context = {
            'post': post,
            'form': form
        }
        return render(request, self.template_name, context)

Forms.py

class PublishForm(forms.ModelForm):
    title = forms.CharField(required=False)
    text = forms.TextInput()
    image = forms.ImageField(required=False)
    users = forms.ModelChoiceField(queryset=User.objects.all(), 
                               widget=forms.Select(), required=False)
    tags = forms.ModelChoiceField(queryset=Tags.objects.all(), 
                               widget=forms.Select(), required=False)
    copyeditor = forms.ModelChoiceField(queryset=User.objects.filter(groups__name__in=['Editor']),
                                    required=False, to_field_name="id")
    comments = forms.CharField(widget=forms.Textarea(), required=False)

    class Meta:
        model = PostsTwo
        fields = ('title', 'text', 'image', 'users', 'copyeditor', 
                           'tags', 'comments')

Models.py

class Unpublished(models.Model):
    title = models.CharField(max_length=500)
    user = models.ForeignKey(User, related_name="owner", default=None, 
                     on_delete=models.CASCADE, blank=True, null=True)
    text = models.TextField()
    image = models.FileField(upload_to='img', default='img/None/no- 
                    img.jpg', blank=True, null=True)
    created_at = models.DateTimeField(default=datetime.now, blank=True)
    users = models.ForeignKey(User, related_name='contributors', 
                    on_delete=models.CASCADE, blank=True, null=True)
    tags = models.ForeignKey(Tags, on_delete=models.CASCADE, 
                    blank=True, null=True, unique=False)
    copyeditor = models.ForeignKey(User, unique=False, 
 limit_choices_to={'groups__name': "Editor"}, on_delete=models.CASCADE, 
                    blank=True, null=True)
    comments = models.CharField(max_length=500000, blank=True, 
                    null=True)

    def __str__(self):
        return self.title

    class Meta:
        verbose_name_plural = "Unpublished"

Я хочу, чтобы, когда пользователь нажимает на сообщение, предварительно заполняется форма со всеми существующими данными, находящимися в базе данных. Все, кроме изображения, заполняется заранее. Что я могу сделать? :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...