Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 9, 2011 19:32:30

I159
От:
Зарегистрирован: 2010-12-09
Сообщения: 85
Репутация: +  0  -
Профиль   Отправить e-mail  

Конфликт в моделях.

Экспериментирую с моделями. При валидации модели выводится ошибка:

oneapp.car: Accessor for field ‘engine’ clashes with related field ‘CarModel.car_set’. Add a related_name argument to the definition for ‘engine’.
Такая же ситуация и в полях ‘car-model’, ‘body’, ‘transmission’ и ‘year’. Почему возникает конфликт? Что за related_name и куда его добавить? (Выкладываю не все модели, а только конфликтующую часть)
class CarModel(models.Model):
car_model = models.CharField(max_length = 24)
body_type = models.ManyToManyField(Body)
engine_type = models.ManyToManyField(Engine)
transmission = models.ManyToManyField(Transmission)
year = models.ManyToManyField(Year)

class Make(models.Model):
make = models.CharField(max_length = 24)
car_model = models.ManyToManyField(CarModel)

class Car(models.Model):
make = models.ForeignKey(Make)
car_model = models.ForeignKey(CarModel)
body = models.ForeignKey(CarModel)
engine = models.ForeignKey(CarModel)
transmission = models.ForeignKey(CarModel)
year = models.ForeignKey(CarModel)



Офлайн

#2 Фев. 9, 2011 20:03:40

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Конфликт в моделях.

related_name - это имя, по которому можно обратно получить доступ к описываемому объекту из связанного объекта, например, по ForeignKey.
У вас одинаковое имя встречается два раза. Так нельзя, им надо давать разные имена, потому что возник конфликт одинаковых related_name в CarModel, он не знает, какой класс ему брать при выборке. Например:

class Car(models.Model):
car_model = models.ForeignKey(CarModel, related_name="car_model")
...
class Make(models.Model):
car_model = models.ForeignKey(CarModel, related_name="make_model")
Тогда из обьектов класса CarModel к Make можно получить доступ так:
CarModel.make_model
CarModel.car_model



Офлайн

#3 Фев. 9, 2011 21:30:33

I159
От:
Зарегистрирован: 2010-12-09
Сообщения: 85
Репутация: +  0  -
Профиль   Отправить e-mail  

Конфликт в моделях.

Понятно, работает. Спасибо



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version