Django模型设计

时间:2010-08-23 17:29:56

标签: python django django-models

我在模型设计方面需要一些帮助。我想要一个模型,用户可以通过从表单提交它们来将自己与大量电子邮件联系起来。当用户想要使用网站联系表格时,他可以选择他想要回复的电子邮件。它会是这样的:

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

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

2 个答案:

答案 0 :(得分:1)

您的示例意味着每个联系人都可以拥有一个电子邮件地址,每个电子邮件地址都可以属于多个联系人。这是错误的方式,即你应该将ForeignKey放在电子邮件模型上。

这可以让您为每个用户存储多个电子邮件地址。

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

u = User.objects.get(pk=1)
u.email_set.all()

答案 1 :(得分:0)

您想要向用户添加用户个人资料。

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()访问它。