Вам не нужно рассказывать Джанго, как выполнять свою работу.Поле не «brand_id» для внешнего ключа, это просто «brand», потому что хотя таблица «Car» (в моем примере я переименовал вашу модель) имеет идентификатор бренда только при разыменованииsomecar.brand
Django передаст вам экземпляр объекта бренда, связанного с ним.
class Car(models.Model):
brand = models.ForeignKey(Brand)
carname = models.TextField()
class Brand(models.Model):
brandname = models.TextField() # supplied for example
Это создает отношения между автомобилем и его маркой.Это все, что вам нужно.
Теперь вы можете сказать что-то вроде
car = Car.objects.get(carname = "Corvette")
print car.brand.brandname # prints "Chevrolet" unless your database is hosed.
print car.brand.id # prints the unique key Django uses to keep track of these relationships
Что касается последней строки вашего примера, что вы пытаетесь сделать?Car_to_brand
- это класс, который описывает объект базы данных;это не сам объект, и поэтому, хотя он описывает отношение к бренду, у него нет собственного бренда.
Немного ясности в этом последнем предложении.Car_to_brand
- это объект Python в том смысле, что все в Python является объектом некоторого рода, но это объект Class, который описывает таблицу базы данных, ее методы доступа и отношения.Это не объект базы данных Django.