Имеется модель заказа (в models.py):
class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,)
first_name = models.CharField(max_length=50, verbose_name="Заказчик")
last_name = models.CharField(max_length=50, blank=True)
phone = models.CharField(max_length=20)
address = models.CharField(max_length=255, blank=True)
date = models.DateTimeField(auto_now_add=True, verbose_name="Дата заказа")
delivery_type = models.CharField(max_length=40, choices=(('self','Самовывоз'),('delivery','Доставка')), default='self', verbose_name="Тип доставки")
delivery_date = models.DateField(default=get_tomorrow())
comments = models.TextField(blank=True)
status = models.CharField(max_length=100, choices=ORDER_STATUS_CHOICES, default='accepted', verbose_name="Статус")
total_cost = models.DecimalField(max_digits=9, decimal_places=2, default=0.00, verbose_name="Итоговая стоимость")
discount = models.DecimalField(max_digits=5, decimal_places=2, default=0.00)
class Meta:
verbose_name = "Заказ"
verbose_name_plural = "Заказы"
def __str__(self):
return "Заказ #{0}".format(str(self.id))
Как видно, она использует пользователей, которые зарегистрированы в системе. Если пользователь не зарегистрирован, то на страницу cheсkout он не попадёт.
Имеется форма (в forms.py):
class OrderForm(forms.ModelForm):
class Meta:
model = Order
fields = ['first_name', 'last_name', 'phone', 'delivery_type', 'delivery_date', 'address', 'comments']
labels = {
'first_name': 'Имя *',
'last_name': 'Фамилия',
'phone': 'Контактный телефон *',
'delivery_type': 'Способ получения',
'delivery_date': 'Дата доставки',
'address': 'Адрес доставки',
'comments': 'Комментарии к заказу',
}
help_texts = {
'phone': '* Пожалуйста, указывайте реальный номер телефона, по которому с Вами можно связаться',
'address': '* Обязательно указывайте город!',
'delivery_date': '! Доставка производится не раньше, чем на следущий день, после оформления заказа. Менеджер с Вами предварительно свяжется!',
}
widgets = {
'delivery_date': forms.SelectDateWidget(),
}
Форма генерируется автоматом при помощи расширения django-bootstrap3 и в шаблоне код выглядит так:
<div class="col-xs-offset-1 col-xs-8">
<form method='POST' action='{% url "make_order" %}' class="form-horizontal"> {% csrf_token %}
{% bootstrap_form form show_label=False layout='horizontal' %}
{% bootstrap_button "Отправить заказ" icon="ok" button_type="submit" button_class="btn-success" extra_classes="pull-right" %}
</form>
</div>
А в браузере так:
если выбрать доставку (откроются доп. поля, сделал через Ajax), но на это отвлекаться не стоит.
Так вот получается, что каждый раз уже залогиненному пользователю приходиться Указывать имя, фамилию и телефон. Но они же есть в профиле.
Что куда добавить (в идеале в файл forms.py), чтобы эти поля заполнялись автоматом?