سلام امیدوارم حال و روزتون خوب باشه.
اول اینکه ندونستم عنوان رو خوب بنویسم. اگه مناسب نیست بگید تا اصلاح کنم.
من مشکلم اینه که یک فرمی رو که ساختم میخواستم اونو در دیتابیس ذخیره کنم. ولی نمیدونم که چطور یک فرمی که خودمون ساختیم و از پیش فرض جنگو استفاده نکردیم کار میکنه(یعنی ذخیره میشه اطلاعاتش)
من کد هارو میزارم تا خودتون یه نگاهی بندازید. ممنون
###########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 یک کدی چیزی بزنم که مقادیر فرمم رو تو دیتابیس سابمیت کنه. ولی خو هر چی میگردم پیدا نمیکنم چی باید بنویسم که داده مو از فرمم تو اچ تی ام ال بگیره و بفرسته دیتابیس
اونایی که کمک کردن ازشون خیلی ممنونم. و اخرش به این نتیجه رسیدم که
اگه از کلاس CreateView به جای FormView استفاده کنید لازم به آبجکت خواستن نیست و خودش میخونه اطلاعات رو از صفحه اچ تی ام ال و ذخیره میکنه
در آخر از @niazi1366m تشکر میکنم که کد اونم کار کرد.
مرسی از همتون.