在Django中为用户从一个应用程序创建外键

时间:2017-11-04 19:13:49

标签: django django-models foreign-keys

我想在我的任务models.py中创建一个用户外键到另一个名为UserProfile的表。我希望将一项任务与用户相关联,因此当我查询并将其显示在个人资料页面中时,我看不到其他任何人。但是,当我尝试这个时,我收到了这个错误:

enter image description here

这是我的tasks.model.py

from django.db import models
from django.contrib.auth.models import User
from useraccounts.models import UserProfile

class Task(models.Model):
    task_name = models.CharField(max_length=140, unique=True)
    owner = models.ForeignKey('user')
    description = models.CharField(max_length=140)
    create_date = models.DateField()
    completed = models.BooleanField()
    private = models.BooleanField()

    def __unicode__(self):  # Tell it to return as a unicode string (The name of the to-do item) rather than just Object.
        return self.name

这是我的useraccounts.models.py

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, default='')
    username = models.CharField(max_length=14, default='')
    birth_date = models.DateField(null=True, default = '2000-01-01', blank=True)
    email = models.EmailField(null=True, default='')

1 个答案:

答案 0 :(得分:1)

在班级Task中,您可以像这样定义外键:

owner = models.ForeignKey('user')

这需要在同一个应用中使用名为user的类。你没有它 因为您想要从另一个应用程序构建与模型的关系,所以您必须使用以下模式app_label.Model。在你的情况下,它应该是这样的:

owner = models.ForeignKey('useraccounts.UserProfile')