Select 下拉菜单中的特定选项 DJANGO
Select specific option from dropdown menu DJANGO
我有一个页面,其中列出了来自 table 个名为 Stocks 的所有项目,每一行都有一个可点击的 ORDER 按钮,可以将用户引导到另一个页面,他们可以在其中输入所有详细信息以及 select 他们想买什么商品和多少钱,然后将所有这些数据保存到一个 table 命名的订单中。
此订单 table 与股票 table 链接如下:
class Order(models.Model):
name = models.CharField(max_length=50, blank=True, null=True)
quantity = models.IntegerField(default='0', blank=False, null=True)
order_item = models.ForeignKey(Stock, on_delete=models.CASCADE, blank=True)
address = models.CharField(max_length=50, blank=True, null=True)
city = models.CharField(max_length=50, blank=True, null=True)
根据他们点击订购按钮的项目,我想自动 select 下一页下拉菜单中的相应项目,这样他们就不必这样做了。
def create_order(request, pk):
queryset = Stock.objects.get(id=pk)
form = CreateOrderForm(request.POST or None, initial={'order_item':queryset.item_name})
if form.is_valid():
form.save()
context = {
'form':form
}
return render(request, 'add_items.html', context)
我尝试使用初始命令执行此操作,但出于某种原因,它不会从默认的空白选项更改。
这是我的 forms.py 以防万一
class CreateOrderForm(forms.ModelForm):
class Meta:
model = Order
fields = ['name','quantity','order_item','address','city']
使用Stock
对象作为初始值,所以不是queryset.item_name
,而是queryset
(虽然因为它不是查询集,最好将其重命名为stock
):
from django.shortcuts import get_object_or_404
def create_order(request, pk):
<strong>stock</strong> = get_object_or_404(Stock, id=pk)
if request.method == 'POST':
form = CreateOrderForm(request.POST, initial={<strong>'order_item': stock</strong>})
if form.is_valid():
form.save()
else:
form = CreateOrderForm(initial={<strong>'order_item': stock</strong>})
context = {
'form':form
}
return render(request, 'add_items.html', context)
Note: It is often better to use get_object_or_404(…)
[Django-doc],
then to use .get(…)
[Django-doc] directly. In case the object does not exists,
for example because the user altered the URL themselves, the get_object_or_404(…)
will result in returning a HTTP 404 Not Found response, whereas using
.get(…)
will result in a HTTP 500 Server Error.
我有一个页面,其中列出了来自 table 个名为 Stocks 的所有项目,每一行都有一个可点击的 ORDER 按钮,可以将用户引导到另一个页面,他们可以在其中输入所有详细信息以及 select 他们想买什么商品和多少钱,然后将所有这些数据保存到一个 table 命名的订单中。
此订单 table 与股票 table 链接如下:
class Order(models.Model):
name = models.CharField(max_length=50, blank=True, null=True)
quantity = models.IntegerField(default='0', blank=False, null=True)
order_item = models.ForeignKey(Stock, on_delete=models.CASCADE, blank=True)
address = models.CharField(max_length=50, blank=True, null=True)
city = models.CharField(max_length=50, blank=True, null=True)
根据他们点击订购按钮的项目,我想自动 select 下一页下拉菜单中的相应项目,这样他们就不必这样做了。
def create_order(request, pk):
queryset = Stock.objects.get(id=pk)
form = CreateOrderForm(request.POST or None, initial={'order_item':queryset.item_name})
if form.is_valid():
form.save()
context = {
'form':form
}
return render(request, 'add_items.html', context)
我尝试使用初始命令执行此操作,但出于某种原因,它不会从默认的空白选项更改。
这是我的 forms.py 以防万一
class CreateOrderForm(forms.ModelForm):
class Meta:
model = Order
fields = ['name','quantity','order_item','address','city']
使用Stock
对象作为初始值,所以不是queryset.item_name
,而是queryset
(虽然因为它不是查询集,最好将其重命名为stock
):
from django.shortcuts import get_object_or_404
def create_order(request, pk):
<strong>stock</strong> = get_object_or_404(Stock, id=pk)
if request.method == 'POST':
form = CreateOrderForm(request.POST, initial={<strong>'order_item': stock</strong>})
if form.is_valid():
form.save()
else:
form = CreateOrderForm(initial={<strong>'order_item': stock</strong>})
context = {
'form':form
}
return render(request, 'add_items.html', context)
Note: It is often better to use
get_object_or_404(…)
[Django-doc], then to use.get(…)
[Django-doc] directly. In case the object does not exists, for example because the user altered the URL themselves, theget_object_or_404(…)
will result in returning a HTTP 404 Not Found response, whereas using.get(…)
will result in a HTTP 500 Server Error.