چطور داده را از یک فرم به دیتابیس بفرستیم؟(جنگو) (حل شد)

سلام امیدوارم حال و روزتون خوب باشه. :rose:
اول اینکه ندونستم عنوان رو خوب بنویسم. اگه مناسب نیست بگید تا اصلاح کنم.

من مشکلم اینه که یک فرمی رو که ساختم میخواستم اونو در دیتابیس ذخیره کنم. ولی نمیدونم که چطور یک فرمی که خودمون ساختیم و از پیش فرض جنگو استفاده نکردیم کار میکنه(یعنی ذخیره میشه اطلاعاتش)

من کد هارو میزارم تا خودتون یه نگاهی بندازید. ممنون

###########views.py#########

from django.urls import reverse_lazy
from django.views.generic import FormView

from .forms import PollPageForm

class CreateNewPoll(FormView):
    form_class = PollPageForm
    success_url = reverse_lazy('index') #this is temporary ... later on we must redirect to new list
    template_name = 'add-new.html'




'################models.py################



from django.db import models

from django.contrib.auth import get_user_model

class Poll(models.Model):

    title = models.CharField(max_length=80)

    description = models.CharField(max_length=200)

    author = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)

    date = models.DateTimeField(auto_now_add=True)

    cover = models.ImageField(upload_to='covers/')

    def __str__(self):

        return self.title



########forms.py###########


from django import forms

from .models import Poll

class PollPageForm(forms.ModelForm):

    class Meta:

        model = Poll

        fields = '__all__'

 ########admin.py########

from django.contrib import admin

from .models import Poll

class PollAdmin(admin.ModelAdmin):

    list_display = ['title','description','author','date','cover']

    search_fields = ('title', 'description',)

admin.site.register(Poll,PollAdmin)

> آها راستی اینم فرمی که تو html دارم

            <div class="col d-flex justify-content-center w-100">

                <form class="w-75" method="POST">

                {% csrf_token %}

                    <div class="form-group">

                        <label for="formGroupExampleInput">لطفا عنوان موضوع خود را انتخاب کنید</label>

                        <input type="text" name="title" class="form-control" id="formGroupExampleInput"

                            placeholder="10 ماشین برتر تاریخ ایران">

                        {%for err in form.title.errors%}

                            <small class="text-danger">{{err}}<small>

                        {% endfor %}

                    </div>

                    <div class="form-group">

                        <label for="formGroupExampleInput2">لطفا در باره عنوان مد نظر توضیحات مناسب کوتاه را انتخاب

                            کنید</label>

                        <input type="text" name="description" class="form-control" id="formGroupExampleInput2"

                            placeholder="میتوانید در باره تاریخ ورود ماشین به ایران چیزی بنویسید">

                            {%for err in form.description.errors%}

                            <small class="text-danger">{{err}}<small>

                            {% endfor %}

                    </div>

                    <div class="form-group">

                        <label for="formGroupExampleInput2"> عکس موضوع مورد نظر را وارد کنید</label>

                        <input type="file" name="cover" class="form-control" id="formGroupExampleInput2">

                            {%for err in form.cover.errors%}

                            <small class="text-danger">{{err}}<small>

                            {% endfor %}

                    </div>

                    <button type="submit" class="btn btn-success">اضافه کردن لیست</button>

                </form> 

            </div>

        </div>

و من فکر میکنم که باید تو views یک کدی چیزی بزنم که مقادیر فرمم رو تو دیتابیس سابمیت کنه. ولی خو هر چی میگردم پیدا نمیکنم چی باید بنویسم که داده مو از فرمم تو اچ تی ام ال بگیره و بفرسته دیتابیس :thinking:


اونایی که کمک کردن ازشون خیلی ممنونم. و اخرش به این نتیجه رسیدم که
اگه از کلاس CreateView به جای FormView استفاده کنید لازم به آبجکت خواستن نیست و خودش میخونه اطلاعات رو از صفحه اچ تی ام ال و ذخیره میکنه
در آخر از @niazi1366m تشکر میکنم که کد اونم کار کرد.
مرسی از همتون.

حمید جان کمک خاصی نکرد.

من تو اد کردن تو دیتابیس مشکل دارم. ای کاش یه بار کد رو میخوندی یه راهکار دیگه میگفتی.
مرسی
اینم اضافه کنم که من از دیفالت django form استفاده نمیکنم. از html معمولی استفاده میکنم.
بلاخره موفق شدم بگیرم اطلاعات رو از فرم. ولی نمیدونم چرا تو دیتابیس ذخیره نمیشه :thinking:


و یکم دیگه پیشرفت کردم و با اضافه کردن این خط کد به views.py تونستم هارد کد به دیتابیس بریزم.

pollsave = Poll(

            title = 'title',

            description = 'description'

        )

        pollsave.save()

میتونی متد save اون فرمت رو دوباره بنویسی

از این طریق می تونید داده ها را فرم html در یافت کرده و در دیتابیس ذخیره کنید

1 Likes