Поле
A ManyToOne
, как вы уже догадались, в Django называется ForeignKey
. Вам нужно определить его в вашем классе User
, чтобы логика работала правильно, но Django автоматически сделает доступным свойство обратного свойства в модели Groups
:
class Group(models.Model):
name = models.CharField(max_length=64)
class User(models.Model):
name = models.CharField(max_length=64)
group = models.ForeignKey(Group)
g = Group.objects.get(id=1)
print g.user_set.all() # prints list of all users in the group
Помните, что модели Django располагаются поверх реляционной базы данных ... нет способа определить одно поле FK в таблице, которое указывает на более чем один внешний ключ (то есть без M2M, то есть), поэтому добавьте ManyToOne отношения на объекте Groups не отображаются на базовое хранилище данных. Если бы вы писали необработанный SQL, вы бы в любом случае смоделировали эту связь с внешним ключом из пользовательской таблицы в таблицу групп, если это помогает думать об этом таким образом. Синтаксис и логика использования свойства ManyToOne
, определенного в экземпляре группы, если бы существовала такая концепция, было бы гораздо проще, чем ForeignKey, определенный для пользователя.