[英]Django modelform is not inserting data
我有一個可以正常工作的Modelform,重定向正常進行而不會引發錯誤。 但是數據沒有插入表中,這是我的文件:
models.py
class Item(models.Model):
# custom validators
alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*$', 'Only alphanumeric characters are allowed.')
# fields
dress_name = models.CharField(max_length=20, null=False, verbose_name='وصف الفستان',
help_text='مثال: فستان سواريه احمر')
dress_size = models.ForeignKey(Size, on_delete='DO_NOTHING', verbose_name='مقاس الفستان')
dress_color = models.ForeignKey(Color, on_delete='DO_NOTHING', verbose_name='لون الفستان')
dress_image1 = models.ImageField(upload_to='documents/%Y/%m/%d', null=False, verbose_name='الصورة الأساسية للفستان',
help_text='لا يمكنك تركها فارغة')
dress_image2 = models.ImageField(upload_to='documents/%Y/%m/%d', null=True, verbose_name='صورة إضافية ')
dress_image3 = models.ImageField(upload_to='documents/%Y/%m/%d', null=True, verbose_name='صورة إضافة ')
dress_action = models.ForeignKey(Action, on_delete='DO_NOTHING', verbose_name='الفستان معروض لل ',
help_text='للبيع او للإيجار ')
dress_price = models.IntegerField(default=1, verbose_name='السعر')
dress_country = models.ForeignKey(Country, on_delete='CASCADE', verbose_name='البلد')
dress_city = models.CharField(max_length=80, verbose_name='المدينة او المحافظة')
dress_mobile = models.CharField(max_length=20, validators=[alphanumeric], verbose_name='رقم الهاتف ')
created_by = models.CharField(max_length=250,)
created_at = models.DateField(auto_now=True)
dress_active = models.BooleanField(default=False)
dress_special = models.BooleanField(default=False)
def __str__(self):
return self.dress_name
forms.py
class AddDressForm(ModelForm):
class Meta:
model = Item
exclude = ['created_by', 'created_at','dress_active','dress_special']
views.py
def add_dress(request):
current_user = request.user
all_dress = Item.objects.all()
all_dress_s = Item.objects.all().filter(dress_special=True)
if request.method == "POST":
add_dress_form = AddDressForm(request.POST)
if add_dress_form.is_valid():
model_instance = add_dress_form.save(commit=False)
model_instance.created_by = current_user
model_instance.save()
return redirect('home')
else:
add_cat_form = AddDressForm()
context = {
'add_cat_form': add_cat_form,
'current_user': current_user,
'all_dress': all_dress,
'all_dress_s': all_dress_s,
}
return render(request, "fostania/add_dress.html", context)
我只需要知道代碼中缺少的內容,這些內容只會讓請求毫無錯誤地通過,而永遠不會將數據插入表中!
**模板中的表格**
<form action="" method="post" name="AddDressForm" align="right">
{% csrf_token %}
{% for field in add_cat_form %}
{{ field.label_tag }} {{ field }} {{ feild.help_text }}
<br>
{% endfor %}
<input type="submit" class="btn btn-success" style="width: 100px;" value="إضافة" />
</form>
這里:
if add_dress_form.is_valid():
model_instance = add_dress_form.save(commit=False)
model_instance.created_by = current_user
model_instance.save()
return redirect('home')
您將無條件地重定向表格是否有效。 您只想在表單有效的情況下進行重定向:
if add_dress_form.is_valid():
model_instance = add_dress_form.save(commit=False)
model_instance.created_by = current_user
model_instance.save()
return redirect('home')
而且您還想確保在模板中顯示表單錯誤,請參閱https://simpleisbetterthancomplex.com/article/2017/08/19/how-to-render-django-form-manually.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.