hal*_*nes 2 python forms django django-forms
我正在尝试创建一个简单的表单,通过询问表单中的ID来提取记录。
views.py
class Bill(models.Model):
"""
Represents a single purchase made by a customer at a business.
"""
business = models.ForeignKey(Businesses)
customer = models.ForeignKey(User, blank=True, null=True)
charge = models.ForeignKey(Charge, blank=True, null=True)
amount = models.IntegerField(verbose_name='Purchase amount (in cents)',
validators=[MinValueValidator(0)])
tip = models.IntegerField(verbose_name='Tip amount (in cents)',
validators=[MinValueValidator(0)])
comments = models.CharField(max_length=255, blank=True, null=True)
timestamp = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
表格
从Django导入表单从django.forms导入ModelForm从transaction.models导入Bill
class BillSelectForm(ModelForm):
class Meta:
model = Bill
fields = ('id',)
Run Code Online (Sandbox Code Playgroud)
views.py
@login_required(login_url='/sign-in/')
def select_bill(request):
"""
Finds a bill based on its ID number.
"""
if request.method == 'POST':
form = BillSelectForm(request.POST)
if form.is_valid():
pass
# look up db for id number
# go to bill view page if id found AND bill not paid
# go back to same page and create message saying wrong bill
else:
form = BillSelectForm()
return render(request, 'bill_select.html', {'form': form})
Run Code Online (Sandbox Code Playgroud)
但是,在模板上,当我使用时{{ form.as_p }},我什么都看不到。有什么想法吗?
在这种情况下,您不应该使用ModelForm。Fazil对于主键是什么以及为什么不应该尝试更新它给出了很好的答案。但这就是模型形式的目的。
另一方面,在某些情况下,要求客户提供“参考号”,因此参考号通常恰好是主键。因此,在这种情况下,解决方案将是使用简单的Form而不是ModelForm。
class BillSelectForm(forms.Form):
pk = forms.IntegerField()
Run Code Online (Sandbox Code Playgroud)
然后
if request.method == 'POST':
form = BillSelectForm(request.POST)
if form.is_valid():
bill = Bill.objects.get(form.cleaned_data['pk'])
else:
form = BillSelectForm()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6939 次 |
| 最近记录: |