Получаем ошибку с _set в Django Query-Set, объект не имеет атрибута

Я использую _set для создания ManyToMany отношений между клиентом и сервисом, но в итоге получаю ошибку:

AttributeError at /customer/1/
у объекта 'carOwner' нет атрибута 'serviceOrderX_get'

Есть ли кто-нибудь, кто хочет мне помочь...

models.py

...

class carOwner(models.Model):
    name_X = models.CharField( max_length=150, null=True)
    email_X = models.CharField( max_length=150, null=True)
    phoneNo_X =models.CharField( max_length=150, null=True)

    def __str__(self):
        return self.name_X

class serviceOrderX(models.Model):
    CATEGORES = (...)
    carName_X = models.CharField( max_length=150, null=True)
    carNO_X = models.CharField( max_length=150, null=True)
    carOwner_X = models.ManyToManyField(carOwner)
    catagores_X = models.CharField(max_length=200,null=True,choices=CATEGORES)
    price_X = models.IntegerField(  null=True)
    service_X = models.ManyToManyField(orderService)

    def __str__(self):
        return str(f'{self.carName_X} , {self.carNO_X}')

views.py

...

def CustomerX(request , pk):
    customersX = carOwner.objects.get(id=pk)
    cuter = customersX.serviceOrderX_get.all()

    contX = {
        'customer' : cuter , 
    }
    return render(request, 'customer.html' , contX)

Я думаю, что у вас просто опечатка в коде. Должно быть set вместо get -> customersX.serviceOrderX_set.all()

Смотрите https://docs.djangoproject.com/en/4.1/topics/db/examples/many_to_many/

Вы также можете установить related_name на вашем ManyToManyField, например service_orders, чтобы вы могли делать customersX.service_orders.all()

Btw. просто подсказка, использование верблюжьего регистра для ваших полей в python не является хорошим стилем. Просто делайте car_owner_x, а для имен классов используйте, например, `ServiceOrderX https://peps.python.org/pep-0008/

Если вы хотите связать поле, первым аргументом, который вы должны добавить, будет имя модели, которую вы хотите связать. В вашем случае вы можете исправить это

class serviceOrderX(models.Model):
    # change here
    service_X = models.ManyToManyField(carOwner)

подробнее читайте здесь: https://docs.djangoproject.com/en/4.1/topics/db/examples/many_to_many/

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