我有一个用户提交表单,并且用户提供他的名字和电子邮件。每封电子邮件都与网络相关联(在用户注册之前由管理员),并根据用户的电子邮件将他分配到该网络。在Django的模型中遇到问题
这里是models.py的样子 -
class Network(models.Model):
network = models.CharField(max_length=50)
location = models.CharField(max_length=50)
class EmailList(models.Model):
email = models.EmailField(blank=True)
network = models.CharField(max_length=50)
class User(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField(max_length=50)
network = models.ForeignKey(Network)
而在views.py
这是我使用的尝试插入记录到数据库中的东西 -
User.objects.create(
name = cd['name']
email=cd['email'],
network= EmailList.objects.filter(email=request.POST.get('email'))['network'])
但是,我收到来自network=
行的TypeError异常。该语法应该在这里“拉”并将与电子邮件关联的网络插入到数据库中?我在做什么错误
更新
这是我在views.py
用得到它的工作的代码。
email_list = EmailList.objects.get(email=cd['email'])
network= Network.objects.get(network=email_list.network)
User.objects.create(
name=cd['name'],
email=cd['email'],
network=network)
当我尝试设置变量email = cd['email']
然后定义使用该变量,像这样EMAIL_LIST - email_list = EmailList.objects.get(email=email)
,它会抛出一个异常说的QuerySet中的emailList没有发现将通过unicode字符串。
为什么在传递它之前定义变量在这种情况下会创建一个unicode字符串,而直接传递表达式不会呢?
EmailList中的'email'应该是'user'作为'User'的外键,'network'应该是'Network'的外键而不是'CharField'。这样可以节省大量的头痛。 – 2011-05-10 20:52:32