是否存储使用外键提交表单的用户的用户名?

时间:2019-05-04 13:55:02

标签: python django postgresql

我正在使用django作为框架来构建库存系统。我有一个已登录用户将提交下订单的模型表格。我要填写的所有字段都可以使用,但“商店”字段除外,该字段对应于下订单的个人。我不希望用户提交用户名,这就是为什么在表单中将其排除在外的原因,我想用'commit = false'覆盖它并自动添加它。 django刚起步,所以我不确定这是否是一个问题。

到目前为止,我已经从“商店”字段中向用户表添加了外键。但是,提交表单时,“商店”字段仍为null。我希望将来自用户的实际用户名放在此字段中。

models.py

class Sysco(models.Model):
    milk = models.IntegerField(null = True)
    store = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null = True,)
    oder_date = models.DateTimeField(auto_now_add=True, blank=True, null = True,)

    def __str__(self):
        managed = True
        db_table = 'sysco'

form.py

class syscoform(forms.ModelForm):


    class Meta:
        model = Sysco
        exclude = ('store', 'order_date')

views.py

class SyscoOrder(TemplateView):
        template_name= "SyscoOrder.html"

        def get(self, request):
                form = syscoform(request.POST,)
                context = {
                        'form'         : form,
                }
                return render(request, self.template_name, context)

        def post(self, request):
                form = syscoform(request.POST,)
                if form.is_valid():
                        form.save(commit=False)
                        form.store = request.user.username
                        form.save()
                        return redirect('Order')

                context ={

                        'form' : form,
                }
                return render(request, self.template_name, context)

1 个答案:

答案 0 :(得分:0)

form.store需要一个用户,但您要提供一个用户名。

form.store=request.user.username更改为form.store=request.user

您将可以获取用户名。

sysco = Sysco.objects.get(id=some_id)
username = sysco.store.username