RelatedObjectDoesNotExist в /profile/ У пользователя нет клиента
Я создал модель пользователя Customer. Я мигрировал модель для синхронизации с базой данных. Однако я получаю ошибку User has no customer.
Но после добавления кода профиля для каждого пользователя я получаю следующую ошибку
Вот мой код Как говорит ошибка, вы используете объект Таким образом, вам необходимо создать при миграции данных вы можете создать и затем запустить миграцию для создания клиента для всех уже существующих пользователей.from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Customer(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
full_name = models.CharField(max_length=200, null=True)
address = models.CharField(max_length=100, null=True, blank=True)
def __str__(self):
return self.full_name
class CustomerProfileView(TemplateView):
template_name = "app/CustomerProfile.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
customer = self.request.user.customer
context['customer'] = customer
orders = Order.objects.filter(cart__customer=customer).order_by("-id")
context["orders"] = orders
return context
User
, для которого не существует связанного объекта Customer
.Customer
запись для всех пользователей, у которых нет Customer
. Вы можете, например, сделать это в миграции данных [Django-doc] с помощью:python manage.py makemigrations --empty app_name
Customer
для каждого пользователя без а Customer
: from django.db import migrations
def create_customers(apps, schema_editor):
Customer = apps.get_model('app_name', 'Customer')
User = apps.get_model('auth', 'User')
customers = [
Customer(user=user, full_name=None, address=None)
for user in User.objects.filter(customer=None)
]
Customer.objects.bulk_create(customers)
class Migration(migrations.Migration):
dependencies = [
('app_name', '1234_some_migration'),
]
operations = [
migrations.RunPython(create_customers),
]