Необходимо добавить поля пользователя в заказ [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
данные?