Как изменить выходную переменную в форме - PullRequest
0 голосов
/ 28 января 2019

Я хочу получить user, когда кто-то публикует файл.Работает как-то, но все равно выдает ошибку.

Я уже пытался переопределить form_valid, но я всегда получаю TypeError.

#forms.py
class CreateMemesForm(forms.ModelForm):
    class Meta:
        model = Meme
        exclude = ["author"]

#models.py
class Meme(models.Model):
    uploaded_at = models.DateTimeField(
        auto_now_add=True)
    title = models.CharField(max_length=255)
    author = models.ForeignKey(CustomUser, on_delete=models.CASCADE, blank=True)
    file = models.FileField(blank=True, upload_to="memes")

#views.py
class UploadMemes(LoginRequiredMixin, FormView):
    form_class = CreateMemesForm
    template_name = "memes/meme_form.html"

    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.author = self.request.user
        self.object.save()
        return super(ModelFormMixin, self).form_valid(form)
#error i get
super(type, obj): obj must be an instance or subtype of type

Это должен получить авторкак CustomUser объект.

1 Ответ

0 голосов
/ 28 января 2019

В этой строке проблема

return super(ModelFormMixin, self).form_valid(form)

. Вам нужно передать пустое поле class name, если вы используете python3

item = self.object.save()
self.pk = item.pk

return super().form_valid(form)

, а затем в любой функции в пределахпредставление

использование self.pk

...