Необходимо добавить поля пользователя в заказ [Django]

У меня есть model для Order и OrderItem

class Order(models.Model):
    first_name = models.CharField(max_length=25)
    last_name = models.CharField(max_length=25)
    email = models.EmailField()
    phone = models.CharField(max_length=15)
    adress = models.CharField(max_length=100)
    comment = models.TextField()
    created = models.DateField(default=datetime.date.today())
    def __str__(self):
            return 'Order {}'.format(self.id)

    def get_total_cost(self):
            return sum(item.get_cost() for item in self.items.all())


class OrderItem(models.Model):
        order = models.ForeignKey(Order, related_name='items', on_delete=models.CASCADE)
        product = models.ForeignKey(Product, related_name='order_items', on_delete=models.CASCADE)
        price = models.DecimalField(max_digits=10, decimal_places=2)
        quantity = models.PositiveIntegerField(default=1)
        def __str__(self):
            return '{}'.format(self.id)

        def get_cost(self):
            return self.price * self.quantity

Для анонимного пользователя (все поля) и для пользователя - только поля Forms и adress.comment

class OrderCreateForm(forms.ModelForm):
    class Meta:
        model = Order
        fields = ('first_name’, 'last_name', 'email', 'phone', 'adress', 'comment')

class OrderUserCreateForm(forms.ModelForm):
        class Meta:
            model = Order
            fields = ('adress', 'comment')

У меня есть views для Анонимного пользователя:

def my_order(request):
    context = {}
    cart = Cart(request)
    if request.method == 'POST':
        form = OrderCreateForm(request.POST)
        if form.is_valid():
            order = form.save()
            for item in cart:
                OrderItem.objects.create(
                    order=order,
                    product=item['product'],
                    price=item['price'],
                    quantity=item['quantity'])
            cart.clear()
            context['order'] = order
    else:
        form = OrderCreateForm()
        context['form']=form
    return render(request, 'my-app/order.html', context)

Моя проблема: Как сделать view для активного user так, чтобы поля 'first_name’, 'last_name', 'email', 'phone' были взяты из user???

А для user сформировать class OrderUserCreateForm(forms.ModelForm) или может быть class OrderUserCreateForm(forms.Form)? Или можно для той же model, только как-то взять user данные?

Вернуться на верх