Django ModelForm 永远不会通过 is_valid()
Django ModelForm never passes is_valid()
我是 Django 的新手,我目前正在尝试将从表单输入的数据存储到 model/database。我认为导致问题的原因是我不希望表单上的所有模型字段都可访问。我的模型有如下字段:
description = models.TextField()
date_referred = models.DateTimeField(default=timezone.now)
full_name = models.CharField(max_length=100)
email = models.EmailField(max_length=100)
phone_number = models.CharField(max_length=17, blank=True)
column_number = models.IntegerField()
notes = models.TextField()
colour = models.CharField(max_length=6)
user = models.ForeignKey(User, on_delete=models.CASCADE)
我使用的ModelForm如下:
class ReferralForm(ModelForm):
class Meta:
model = kanban_item
fields = ["item_name", "description", "full_name", "email", "phone_number"]
views.py 文件中的代码是这样的:
def submit_referrals(request):
form = ReferralForm()
if request.method == "POST":
form = ReferralForm()
print(request.POST)
if form.is_valid():
print("VALID")
referral = form.save(commit=False)
referral.user = request.user
referral.column_number = 0
referral.colour = "ffffff"
referral.save()
else :
print ("NOT VALID")
如您所见,我正在尝试从表单创建一个模型,然后添加额外的字段,然后将模型保存到数据库中。这不起作用,因为每当我提交表单时,我的代码永远不会通过表单上的 is_valid 方法。
如有任何建议或答案,我将不胜感激,谢谢。
您需要使用数据 (request.POST
) 构建 ReferralForm
,可能还需要使用文件 (request.FILES
)。
没有数据的Form
称为“无界”形式,无界形式总是无效的。因此,您创建了一个包含以下数据的表单:
def submit_referrals(request):
form = ReferralForm()
if request.method == "POST":
form = ReferralForm(<strong>request.POST, request.FILES</strong>) # 🖘 add data and files
if form.is_valid():
print("VALID")
referral = form.save(commit=False)
referral.user = request.user
referral.column_number = 0
referral.colour = "ffffff"
referral.save()
else :
print ("NOT VALID")
我是 Django 的新手,我目前正在尝试将从表单输入的数据存储到 model/database。我认为导致问题的原因是我不希望表单上的所有模型字段都可访问。我的模型有如下字段:
description = models.TextField()
date_referred = models.DateTimeField(default=timezone.now)
full_name = models.CharField(max_length=100)
email = models.EmailField(max_length=100)
phone_number = models.CharField(max_length=17, blank=True)
column_number = models.IntegerField()
notes = models.TextField()
colour = models.CharField(max_length=6)
user = models.ForeignKey(User, on_delete=models.CASCADE)
我使用的ModelForm如下:
class ReferralForm(ModelForm):
class Meta:
model = kanban_item
fields = ["item_name", "description", "full_name", "email", "phone_number"]
views.py 文件中的代码是这样的:
def submit_referrals(request):
form = ReferralForm()
if request.method == "POST":
form = ReferralForm()
print(request.POST)
if form.is_valid():
print("VALID")
referral = form.save(commit=False)
referral.user = request.user
referral.column_number = 0
referral.colour = "ffffff"
referral.save()
else :
print ("NOT VALID")
如您所见,我正在尝试从表单创建一个模型,然后添加额外的字段,然后将模型保存到数据库中。这不起作用,因为每当我提交表单时,我的代码永远不会通过表单上的 is_valid 方法。
如有任何建议或答案,我将不胜感激,谢谢。
您需要使用数据 (request.POST
) 构建 ReferralForm
,可能还需要使用文件 (request.FILES
)。
没有数据的Form
称为“无界”形式,无界形式总是无效的。因此,您创建了一个包含以下数据的表单:
def submit_referrals(request):
form = ReferralForm()
if request.method == "POST":
form = ReferralForm(<strong>request.POST, request.FILES</strong>) # 🖘 add data and files
if form.is_valid():
print("VALID")
referral = form.save(commit=False)
referral.user = request.user
referral.column_number = 0
referral.colour = "ffffff"
referral.save()
else :
print ("NOT VALID")