has_many: через вопросы

От документация Django :

MAYBECHOICE = (
    ('y', 'Yes'),
    ('n', 'No'),
    ('u', 'Unknown'),
)

И Вы определяете charfield в своей модели:

married = models.CharField(max_length=1, choices=MAYBECHOICE)

можно сделать то же с целочисленными полями, если Вам не нравится иметь буквы в Вашем дб.

В этом случае, перепишите свой выбор:

MAYBECHOICE = (
    (0, 'Yes'),
    (1, 'No'),
    (2, 'Unknown'),
)

6
задан cmaughan 11 November 2009 в 07:07
поделиться

1 ответ

1: Да, это правильно

2: Из документации по uniq :

Если это правда, дубликаты будут опущены из коллекции. Полезно в в сочетании с: through.

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

Однако это не предотвратит создание дубликатов GameUsers. Для этого вам нужно будет использовать validates_ уникальность _of в модели GameUser:

class GameUser < ActiveRecord::Base
  validates_uniqueness_of :game_id, :scope => :user_id
end

3: Нет, вы больше не хотите использовать: id => false. Переключившись с has_and_belongs_to_many на has_many: through, вы повысили свою объединенную таблицу "многие ко многим" до полной модели - GameUser, которая требует собственного идентификатора.

Хотя она старая, эта является все еще хорошая статья для понимания has_many: through.

5
ответ дан 17 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: