Python Django模型设计

Python Django模型设计,python,django,django-models,Python,Django,Django Models,我需要一些模型设计方面的帮助。我想要一个模型,在这个模型中,用户可以通过表单提交大量电子邮件来将自己与之关联。当用户想要使用网站联系表单时,他可以选择他想要回复的电子邮件。会是这样的吗? class Email(models.Model): author = models.ForeignKey(User) email = models.EmailField() class Contact(models.Model) author = models.ForeignKey(

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

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

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

您想向用户添加用户配置文件

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()

访问它。您的示例意味着每个联系人可以有一个电子邮件地址,并且每个电子邮件地址可以属于多个联系人。这是一个错误的方法,即你应该把外键放在电子邮件模型上

这将允许您为每个用户存储多个电子邮件地址

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

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

Django中没有“ForeignField”-它是
ForeignKey
。联系人模型不需要“作者”字段。可以从联系人模型的电子邮件字段访问作者。除此之外,这对我来说似乎是合理的。好吧,这样你就可以利用Django为此而内置的东西。无论如何,您可能会向您的用户配置文件添加更多内容。