LINUX.ORG.RU

Нужно ли добавлять постфикс id?

 , ,


0

1

есть стандартная схема

class Some1(models.Model):
  field1 = ...
  field2 = ...

class Some2(models.Model):
  some1 = ForeignKey(Some1,...)

Так вот, корректно делать

some1 = ForeignKey(Some1,...)

или

some1_id = ForeignKey(Some1,...)

Всегда мучал этот вопрос :)

★★★

Последнее исправление: serg002 (всего исправлений: 2)

Ну вообще-то если ты сделаешь в своей модели поле

related = ForeignKey(SomeModel, ...)

То у твоей модели автоматически появится поле related_id, в котором будет лежать непосредственно значение внешнего ключа, в то время как в related у тебя целая модель

Aswed ★★★★★
()
Ответ на: комментарий от gruy

А если такой случай: есть микросервис1 и микросервис2, в микросервисе1 нужно сделать поле, в которое будет писаться id из микросервиса2. Стоит ли тогда называть city_id или надо так же делать поле city?

serg002 ★★★
() автор топика
Ответ на: комментарий от serg002

Не знаю как в питоновских орм, но в sql если поле содержит id, то в названии должно быть id

nikolnik ★★★
()
Ответ на: комментарий от serg002

Ты не понял. Поля some1 в данном случае физически в БД нет - Джанга внутри создает реальное поле some1_id, с которым уже идет работа на уровне SQL. some1 существует только в процессе работы внутри приложения Джанги.

Если твои микросервисы работают не на Джанго, но с БД, которая создана и управляется приложением на Джанго, то ты должен использовать имена таких полей с суффиксом _id.

gruy ★★★★★
()
Ответ на: комментарий от gruy

Еще раз: в случае с ForeignKey _id проставлять не надо, а во втором случае(вопрос про микросервисы) надо?

serg002 ★★★
() автор топика
Ответ на: комментарий от gruy

djangorest. Вопрос в том, насколько нужно делать field_id = IntegerField() вместо field = IntegerField(), если предполагается, что в него будет писаться id из другого микросервиса. Или достаточно verbose_name, в котором будет говориться о том, что это «ID что-то-там»

serg002 ★★★
() автор топика
Последнее исправление: serg002 (всего исправлений: 1)
Ответ на: комментарий от gruy

Так это было отдельным вопросом у меня:

А если такой случай: есть микросервис1 и микросервис2, в микросервисе1 нужно сделать поле, в которое будет писаться id из микросервиса2. Стоит ли тогда называть city_id или надо так же делать поле city?

Если в него будет писаться id, то это и подразумевает то, что он будет IntegerField

serg002 ★★★
() автор топика
Последнее исправление: serg002 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.