Джанго Модельный дизайн - PullRequest
       10

Джанго Модельный дизайн

3 голосов
/ 23 августа 2010

Мне нужна была помощь в дизайне модели. Я хотел модель, в которой пользователь может связать себя с многочисленными электронными письмами, отправляя их из формы. И когда пользователь хочет использовать контактную форму веб-сайтов, он может выбрать электронное письмо, на которое он хочет получить ответ. Будет ли это что-то вроде этого:

class Email(models.Model):
    author = models.ForeignKey(User)
    email = models.EmailField()

class Contact(models.Model)
    author = models.ForeignKey(User)
    email = models.ForeignKey(Email)

Ответы [ 2 ]

1 голос
/ 28 августа 2010

Ваш пример означает, что каждый контакт может иметь один адрес электронной почты, и каждый адрес электронной почты может принадлежать нескольким контактам.Это неправильный способ, т. Е. Вы должны указать ForeignKey для модели Email.

Это позволит вам сохранить несколько адресов электронной почты для каждого пользователя.

0 голосов
/ 23 августа 2010

Вы хотите добавить профиль пользователя к своим пользователям.

from django.contrib import auth

class UserProfile(models.Model):
    """A user profile."""
    user = models.OneToOneField(auth.models.User)
    # ... put more fields here


def user_post_save(sender, instance, **kwargs):
    """Make sure that every new user gets a profile."""
    profile, new = UserProfile.objects.get_or_create(user=instance)

models.signals.post_save.connect(user_post_save, sender=auth.models.User)

, тогда вы можете получить к нему доступ с помощью request.user.get_profile().

...