django - 设置 MyForm(data=data) (Django) 时“user_id”为空
问题描述
我有以下型号
#models.py
class MyModel(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete = models.CASCADE,null=True)
link = models.URLField(max_length=2048)
date_added = models.DateTimeField(default = timezone.now)
used = models.BooleanField(default = True)
和我的表格
class MyModelForm(forms.ModelForm):
class Meta:
model = Wishlist
exclude = [
"user","date_added"
]
当我在我看来尝试“手动”创建一个实例(在 for 循环中)并保存它时,我的数据库中的“user_id”为 NULL
#views.py
def AddLink(request):
user = request.user
instance = MyModel(user=user)
if request.method == "POST":
form = MyModelForm(request.POST,instance = instance)
if form.is_valid():
link = form.instance.wishlist
used = form.instance.discount_pct
#some util function to do some stuff
res = my_util_func(link,api_key)
for used, link in zip(res[0],res[1]):
data = {"link":link,"used":used}
form = MyModelForm(data=data)
form.save()
context = {
"results":res}
return render(request, "discounttracker/myhtml.html",context=context)
我已尝试更改data
为data = {"link":link,"used":used,"user":user}
,data = {"link":link,"used":used,"user_id":user}
但它仍然是空的。
如何在此处添加用户?
解决方案
ModelForm.save()
在调用中有一个秘密选项,commit
它允许您现在不保存表单,而是返回一个模型并在其中插入一些数据。这应该在这里完美地工作
form = MyModelForm(data=data))
instance = form.save(commit=False)
instance.user = request.user
instance.save()
此示例将当前登录的用户插入user
模型的字段中。
推荐阅读
- python - Pycups - 使用 IPPAttribute 创建和发送 IPPRequest 并解析响应(启用 IPP:Hold-New-Jobs)
- unity3d - 当浮点数在统一 2019.4.1f1 中返回 0 时混合树出现问题
- java - 如何在像古吉拉特语这样的java中打印印度地区语言?
- c# - 有什么方法可以基于 GetInstance() 动态转换类型
- c++ - SFML 无法加载图像
- javascript - 如何检查 Typescript AST 节点是否是 javascript 本机函数?
- reactjs - 如何从 Firestore 渲染数据以响应本机组件?
- jquery - 如何使用 jQuery 选择嵌套在数据属性中的 id?
- reactjs - 从父组件的函数体内更新子组件
- javascript - 如何在javascript中将数组转换为json对象?