Я строю систему инвентаризации, используя django в качестве основы. У меня есть форма модели, которую зарегистрированный пользователь отправит для размещения заказа. все поля, которые я хочу заполнить, работают, за исключением поля «магазин», которое соответствует человеку, который размещает заказ. Я не хочу, чтобы пользователь отправлял имя пользователя, поэтому оно было исключено из формы, я хотел бы переопределить его с помощью 'commit = false' и добавить его автоматически. Довольно плохо знаком с django, поэтому я не уверен, является ли это проблемой.
Пока что я добавил посторонний ключ из поля store в таблицу пользователей. Однако, когда форма отправлена, поле «store» остается пустым. Я хотел бы, чтобы фактическое имя пользователя от пользователей было помещено в это поле.
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)