Django:使用外键创建链接表

时间:2011-10-19 01:56:09

标签: database django sqlite foreign-keys primary-key

我的SQLite数据库中有3个表:用户,帐户,密码。帐户和密码的ID是对User.id的ForeignKey。问题是User的实例在保存之前没有id(并且django添加了Primary Field)。这就是我尝试这样做的方式,因为User.email应该是唯一的,然后我应该只返回一个对象,但它不起作用。我确信有更好的方法可以做到这一点。

tl; dr当我创建用户时,我还想要为他们创建一个帐户和密码表,通过ForeignKey,id(也是PrimaryKey)进行链接。

def adduser(request):
    u = User(email=request.POST['email'], username=request.POST['username'], password=request.POST['password'])
    a = Accounts()
    u.save()
    u = User.objects.get(email=request.POST['email'])
    a.id = u.id
    a.save()

1 个答案:

答案 0 :(得分:1)

这更接近你想要的。

def adduser(request):
    u = User(email=request.POST['email'], username=request.POST['username'], password=request.POST['password'])
    u.save()
    a = Accounts(
        user=u
    )
    a.save()
  1. 您使用的是django的用户模型吗?
  2. 如果是这样,你真的想要这个:

    def adduser(request):
        u = User(email=request.POST['email'], username=request.POST['username'])
        u.set_password(request.POST['password'])
        u.save()
        a = Accounts(
            user=u
        )
        a.save()
    

    此外,您是否考虑过使用django的表单和表单实用程序,而不是在任何地方使用request.POST变量?他们很不错。