Python 设置排除表单字段

Python 设置排除表单字段,python,django,forms,Python,Django,Forms,我在表单字段中插入时遇到问题 这是comment models.py: class UserComment(models.Model): comment_id= models.AutoField(primary_key=True) comment_on_product_id= models.ForeignKey(Post) user_name= models.CharField(max_length=50) comment_text=

我在表单字段中插入时遇到问题

这是comment models.py:

class UserComment(models.Model):
comment_id=              models.AutoField(primary_key=True)
comment_on_product_id=   models.ForeignKey(Post) 
user_name=               models.CharField(max_length=50)
comment_text=            models.TextField()
comment_timestamp=       models.TimeField(auto_now_add=True,auto_now=True)
和我的forms.py:

class UserCommentForm(forms.ModelForm):
class Meta:
    model=UserComment
    exclude=['comment_on_product_id',]
用户应该看到什么:

正如您所看到的,产品id上的注释不应该出现在页面上,但我必须在该字段中插入一个值。 在视图中,我的代码如下: . .

但是它看起来form.Meta.model.comment\u on\u product\u id=selected\u object.product\u id不起作用。 错误: 失败行包含112,null,usernaem,注释文本,18:33:39.848621


为什么它是空的?我应该如何设置它?

访问表单上的实例,而不是元类

form=UserCommentForm(request.POST or None)
if form.is_valid():
    form.instance.comment_on_product_id= selected_object.product_id
    save_it=form.save(commit=False)
    save_it.save()

谢谢但这并没有起作用。错误:无法分配2:UserComment.comment\u on\u product\u id必须是存储实例。2是当前产品id将模型上产品id上的名称comment更改为comment on product。然后保持我写的相同的视图逻辑。否则,您需要将产品标识上的form.instance.comment\u更改为form.instance.comment\u on\u product\u id\u idcomment\u on\u product\u id\u id->第二个标识是什么?模型上的字段表示FK引用的实例的实际主键。这就是为什么您永远不应该将FK字段命名为\u id。
form=UserCommentForm(request.POST or None)
if form.is_valid():
    form.instance.comment_on_product_id= selected_object.product_id
    save_it=form.save(commit=False)
    save_it.save()