【发布时间】:2017-01-28 05:44:47
【问题描述】:
我正在尝试将上一个网站的 id (brand_id) 注入表单中,因为我尝试在 DB 上创建的对象取决于该外键关系。这是代码
from brand.models import Brand
from .models import Campaign
from .forms import CampaignForm
# Create your views here.
def campaign_create(request):
previous_website = request.META['HTTP_REFERER']
brand_id = int(previous_website.rsplit('/', 1)[-1])
print(brand_id)
brand_object = Brand.objects.get(id=brand_id)
# if not request.user.is_staff or not request.user.is_superuser:
# raise Http404
title = "Create Campaign"
form = CampaignForm(request.POST or None)
# check whether it's valid:
if form.is_valid(): #Checking that form is valid
instance = form.save(commit=False) # saving the form as an instance object
instance.user = request.user
instance.brand = brand_object #adding the brand object
instance.save() # saving in the database
# redirect to a new URL:
return HttpResponseRedirect(instance.get_absolute_url())
context = {
"form": form,
"title": title,
}
return render(request, "campaign_form.html", context)
在代码之外(在 shell 中),这完美无缺,问题是当我尝试提交代码时,虽然我得到了正确的 ID 号(在日志中打印正确的值)并且我得到了正确的 brand_object,我是得到一个 ValueError
ValueError 位于 /dashboard/campaign/create/ 基数为 10 的 int() 的无效文字:''
因为在提交表单之前元值更改为当前网站(新的 previous_website 现在是当前网站)。我怎样才能做到这一点,以便我可以在 META 值更改之前获得它,或者我可以使用哪些其他方法来获取该对象创建所依赖的品牌对象,而无需动态更改它?
我的流程是:
- 创建品牌 --> localhost:/dashboard/brand/create
- 创建品牌后重定向到该品牌 --> localhost:/dashboard/brand/detail/(brand_id)
- 创建活动(与品牌相关)localhost:/dashboard/campaign/create
品牌和营销活动是作为外键连接的应用(一个品牌可以有多个营销活动,但一个营销活动不能有多个品牌)
【问题讨论】:
标签: django django-models django-forms