【问题标题】:Django: creating linked tables with Foreign keysDjango:使用外键创建链接表
【发布时间】:2011-12-10 13:43:30
【问题描述】:

我的 SQLite 数据库中有 3 个表:用户、帐户、密码。 Accounts and Passwords 的 id 是 User.id 的 ForeignKey。问题是 User 的实例在保存之前没有 id(并且 django 添加了主字段)。这就是我尝试这样做的方式,因为 User.email 应该是唯一的,那么我应该只取回一个对象,但它不起作用。我确信有更好的方法来做到这一点。

tl;dr 当我创建用户时,我还希望为他们创建一个帐户和密码表,通过外键 ID 链接,这也是主键。

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

【问题讨论】:

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


    【解决方案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 的 User 模型吗?

    如果你真的想要这个:

    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 变量?他们很好。

    【讨论】:

    • 这似乎只是 1.3,我在 1.3 上遇到了很多问题,所以我现在使用的是 1.2.7 :(
    • Issac 的答案中没有任何内容是 1.3-only。
    猜你喜欢
    • 2016-11-06
    • 1970-01-01
    • 2012-12-04
    • 2019-06-27
    • 2015-02-02
    • 2019-01-11
    • 2021-10-30
    • 1970-01-01
    相关资源
    最近更新 更多