我正在使用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)
答案 0 :(得分:0)
form.store
需要一个用户,但您要提供一个用户名。
将form.store=request.user.username
更改为form.store=request.user
您将可以获取用户名。
sysco = Sysco.objects.get(id=some_id)
username = sysco.store.username