【问题标题】:How to save forms field in django如何在 django 中保存表单字段
【发布时间】:2017-04-04 20:24:59
【问题描述】:

我的 django 模型中有一些字段。

class Product(models.Model):
    user=models.ForeignKey(User)
    product_name = models.CharField(max_length=50)
    product_cost = models.IntegerField(default=0,null=True, blank=True)
    product_description = models.TextField(null=True, blank=True)
    quantity = models.IntegerField(default=0,null=True, blank=True)
    product_image = models.FileField(upload_to='images/',blank=True,null=True,)
    coupon_code = models.CharField(max_length=50)
    time = models.DateTimeField(default=timezone.now)


    def __str__(self):
        return self.product_name or u''

当我使用表单将前端的所有数据保存在我的数据库中时,我可以做到这一点。

class DocumentForm(forms.ModelForm):


    class Meta:
        model = Product

        fields = ('user','product_name','product_image','product_cost','product_description','product_description','coupon_code')

问题是我不想让用户从前端填充用户数据。当用户保存数据时,它将 request.user 保存给用户。 我是使用表单的新手,因此面临一些问题。 请帮助我如何做到这一点。 提前致谢。

【问题讨论】:

  • 您可以通过删除这些字段来做到这一点
  • 如果我删除用户字段,那么我如何为该字段提供值。这是必填字段
  • 我认为这是this question的副本。

标签: python django django-forms


【解决方案1】:

fields 中,您必须删除user: 所以它看起来像这样: 类 DocumentForm(forms.ModelForm):

class Meta:
    model = Product

    fields = ('product_name','product_image','product_cost','product_description','product_description','coupon_code')

当你保存表单中的数据时,在你的views.py中你写了这样的东西:

user = request.user

在这种情况下,如果用户通过身份验证,他将被保存。

如果您希望未经身份验证的用户也可以填写表格,您必须在您的 model.py Product 类中更改:

user=models.ForeignKey(User) 

到:

user=models.ForeignKey(User, null=True)

那么未通过身份验证的用户将是NULL

【讨论】:

  • 错误显示。NOT NULL 约束失败:userInfo_product.user_id
猜你喜欢
  • 2012-02-14
  • 1970-01-01
  • 2018-09-30
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
相关资源
最近更新 更多