快速(可能是愚蠢的)问题。这是我网站的流程:用户登录并重定向到自定义管理页面。在此管理页面上,他们可以制作“个人资料”。我想将他们创建的配置文件与其用户数据相关联,以便1个用户关联到1个配置文件。
由于某种原因,以下内容无法正常工作(只是尝试关联
UserAdmin.Models
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
username = models.ForeignKey(User)
firstname = models.CharField(max_length=200)
lastname = models.CharField(max_length=200)
email = models.EmailField(max_length=200)
def __unicode__(self):
return self.username
UserAdmin.Views
def createprofile(request):
user = User.objects.get(id=1)
profile = Profile(username=user, firstname='Joe', lastname='Soe', email='Joe@Soe.com')
profile.save()
我一直得到:表useradmin_profile没有名为username_id的列
有什么想法吗?赞赏。
修改
删除我的数据库并运行一个新的syncdb,更改为username = models.OneToOneField(User)。现在我开始无法分配“u'superuser”“:”Profile.username“必须是”用户“实例。
答案 0 :(得分:9)
UserAdmin.Models
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User)
def __unicode__(self):
return self.user.get_full_name()
UserAdmin.Views
def createprofile(request):
user_ = User.objects.get(pk=1)
profile = Profile(user=user_)
profile.user.first_name = 'Joe'
profile.user.last_name = 'Soe'
profile.user.email = 'Joe@Soe.com'
profile.user.save()
profile.save()
答案 1 :(得分:2)
在拥有username
ForeignKey字段之前,您已同步了db模型。 Django只会创建表,但一旦创建它们就不会改变它们。这里有一个答案列出您的选择:
https://stackoverflow.com/a/7693297/990224
您应该考虑将username
重命名为user
。