Сохранение имени пользователя, который отправил форму с помощью foreignkey? - PullRequest
0 голосов
/ 04 мая 2019

Я строю систему инвентаризации, используя 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)

1 Ответ

0 голосов
/ 04 мая 2019

form.store нужен пользователь, но вы даете имя пользователя.

Измените form.store=request.user.username на form.store=request.user

После этого вы сможете получить имя пользователя.

sysco = Sysco.objects.get(id=some_id)
username = sysco.store.username
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...