数据无法从Django表单进入数据库

fiei3ece  于 11个月前  发布在  Go
关注(0)|答案(1)|浏览(103)

我按下'提交'按钮,有'后'在终端请求,但没有新的模型在数据库中。
forms.py

class PinCreationForm(forms.ModelForm):
    image = forms.ImageField(widget=forms.ClearableFileInput(attrs={
        'class':'create-pin-file-input'
    }))
    name = forms.CharField(widget=forms.TextInput(attrs={
        'class': 'create-pin-text-input', 'placeholder': 'Богатый мужчина'
    }))
    description = forms.CharField(widget=forms.TextInput(attrs={
        'class': 'create-pin-text-input', 'placeholder': 'Мужик стоит дрочит'
    }))
    tags = forms.CharField(widget=forms.TextInput(attrs={
        'class': 'create-pin-text-input', 'placeholder': 'Спорт, Машина, Огород'
    }))
    class Meta:
        model = PinModel
        fields = ('image', 'name', 'description', 'tags')

字符串
models.py

class PinModel(models.Model):
    name = models.CharField(max_length=50)
    description = models.TextField(null=True, blank=True)
    tags = models.TextField()
    image = models.ImageField(upload_to='pin_images')
    user = models.ForeignKey(to=User, on_delete=models.CASCADE)


views.py

class CreatePinView(CreateView):
    model = PinModel
    form_class = PinCreationForm
    template_name = 'pinapp/create-pin.html'
    success_url = reverse_lazy('users:login')


HTML

section class="create-pin-section">
    <div class="create-pin-div">
        <h2>Create Pin</h2>
        <form action="{% url 'create-pin' %}" class="create-pin-form" method="post">
            {% csrf_token %}
            <label for="{{ form.image.id_for_label }}">Choose Pic</label>
            {{ form.image }}
            <label for="{{ form.name.id_for_label }}">Choose da name</label>
            {{ form.name }}
            <label for="{{ form.description.id_for_label }}">Choose da description</label>
            {{ form.description }}
            <label for="{{ form.tags.id_for_label }}">Choose da tags</label>
            {{ form.tags }}
            <button type="submit">Create</button>
        </form>
    </div>
</section>


我想解释一下,我想要的是“用户”字段将与提交表单的用户填写
我试了所有我能找到的方法,没有结果。

4ioopgfo

4ioopgfo1#

首先,表单中有file输入,因此必须使用enctype="multipart/form-data"

<form ..., enctype="multipart/form-data">
    ...
</form>

字符串
关于你的问题,你可以覆盖CreateView方法(如postform_valid),一个例子:

class CreatePinView(CreateView):
    ...
        
    def form_valid(self, form):
        """If the form is valid, save the associated model."""
        self.object = form.save(commit=False)
        self.object.user = self.request.user
        self.object.save()
        return super().form_valid(form)

相关问题