Вам не нужно указывать Django, как выполнять свою работу. Поле не является «brand_id» для внешнего ключа, это просто «бренд», потому что, хотя таблица «Автомобиль» (в моем примере ниже я переименовал вашу модель) имеет только идентификатор бренда, когда вы разыменовываете 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 является объектом некоторого рода, но это объект класса, который описывает таблицу базы данных, ее методы доступа и отношения. Это не объект базы данных Django.
person
Elf Sternberg
schedule
01.09.2011