Как написать эту «модель» в Django? - PullRequest
2 голосов
/ 09 октября 2009

В настоящее время я использую модель Django Users. Очень просто. Однако я хотел бы добавить одну функцию: Добавление друзей!

Я хотел бы создать 2 столбца в моей таблице:

UID (идентификатор пользователя) friend_id (идентификатор его друга! ... конечно, этот идентификатор также в пользовательской модели Django. Комбинация UID-friend_id должна быть уникальной! Например, если мой идентификатор равен 84, у меня не может быть двух одинаковых строк, поскольку я могу подписаться на одного друга только один раз.

Может кто-нибудь сказать мне, если это правильный способ сделать это? Должен ли я сделать некоторые KEY отношения для "friend_id", или я должен оставить это как "IntegerField"?

class Friend(models.Model):
    uid = models.ForeignKey(User)
    friend_id = models.IntegerField(default=0)

Спасибо

1 Ответ

11 голосов
/ 09 октября 2009

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

Здесь есть статья, объясняющая, как именно это сделать: http://www.packtpub.com/article/building-friend-networks-with-django-1.0

Пример модели с этой страницы:

class Friendship(models.Model):
  from_friend = models.ForeignKey(
    User, related_name='friend_set'
  )
  to_friend = models.ForeignKey(
    User, related_name='to_friend_set'
  )
  def __unicode__(self):
    return u'%s, %s' % (
      self.from_friend.username,
      self.to_friend.username
    )
  class Meta:
    unique_together = (('to_friend', 'from_friend'), )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...