这是我在这里的第一篇文章,我对 Django 很陌生,但我似乎无法找到解决这个问题的方法……我搜索了 stackoverflow 和谷歌,但似乎没有什么对我有用……
我有一个葡萄酒应用程序,希望能够从用户的库存中添加和删除葡萄酒。在酒的列表中,用户可以选择要添加的酒,该酒的 ID 在 POST 数据中传递。由于在第一次呈现视图后数据丢失了,我将 ID 保存在 cookie 中,这是有效的,但问题是当我使用 ModelForm 时,用户必须为用户和酒选择外键,这很糟糕,所以我尝试将其隐藏并在用户选择要添加的瓶子数量但在验证之前设置 Fk_user 和 Fk_wine。这是谷歌每个人都建议我应该使用“初始”并将其传递给表单之后的问题,但这显然不起作用,因为如果我使表单中的字段可见,我可以看到它没有被预选......
视图.py:
def addStockView(request):
wineId = request.POST.get('addStock')
if 'addStock' in request.POST:
wine = get_object_or_404(Wine, idwine=int(wineId))
userId = request.user.id
user = get_object_or_404(AuthUser, id=userId)
if request.method == 'POST':
#wineIdNew = request.COOKIES.get('wineIdToAdd')
#wineNew = get_object_or_404(Wine, idwine=wineIdNew)
form = StockForm(request.POST, initial={'fk_wine': wineNew.idwine, 'fk_auth_user': user.id})
if form.is_valid():
form.save()
return redirect('home')
else:
form = StockForm(initial={'fk_wine': wine.id,
'fk_auth_user': user.id})
response = render(request, 'addToStock.html', {'form': form})
response.set_cookie('wineIdToAdd', wineId)
return response
表格.py:
class StockForm(forms.ModelForm):
#fk_wine = ModelChoiceField(queryset=Wine.objects.all(),
# widget=HiddenInput())
#fk_auth_user = ModelChoiceField(queryset=AuthUser.objects.all(),
# widget=HiddenInput())
class Meta:
model = UserWineStock
fields = ['fk_auth_user', 'fk_wine', 'number']
谁能帮我这个..?