Python 如何将用户模型引用到我的应用程序模型并提供外键

Python 如何将用户模型引用到我的应用程序模型并提供外键,python,django,django-models,django-views,django-allauth,Python,Django,Django Models,Django Views,Django Allauth,我使用的是Django Cookiecutter,它使用Django Allauth来处理所有身份验证,并且安装了一个名为user的应用程序,它处理与用户相关的所有事情,如注册、注销等 我正在为用户共享models.py文件 @python_2_unicode_compatible class User(AbstractUser): # First Name and Last Name do not cover name patterns # around the globe.

我使用的是Django Cookiecutter,它使用Django Allauth来处理所有身份验证,并且安装了一个名为user的应用程序,它处理与用户相关的所有事情,如注册、注销等

我正在为用户共享models.py文件

@python_2_unicode_compatible
class User(AbstractUser):

    # First Name and Last Name do not cover name patterns
    # around the globe.
    name = models.CharField(_('Name of User'), blank=True, max_length=255)

    def __str__(self):
        return self.username

    def get_absolute_url(self):
        return reverse('users:detail', kwargs={'username': self.username})
现在我已经添加了我的新应用程序say Course和my models.py

class Course(models.Model):
    name = models.CharField(max_length=30)
    description = models.CharField(max_length=100)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("details:assess", kwargs={"id": self.id})
我还将我的views.py定义为

@login_required
def course_list(request):
    queryset = queryset = Course.objects.all()
    print("query set value is", queryset)
    context = {
             "object_list" :queryset,
              }

return render(request, "course_details/Course_details.html", context)
是否有任何方法可以将(外键)用户应用程序引用到我的课程应用程序,以便每个用户都有自己的课程分配给它

一种可能的方法是根据用户筛选对象并将其传递给模板


我不知道如何映射用户和课程,以便获得分配给特定用户的课程列表。

您可以直接添加外键,如下所示:

user = models.Foreignkey(User,related_name="zyz")

除非您只向一个用户提供课程,否则在用户和课程模型之间建立一对多关系是没有意义的。所以,你需要一个多对多的关系。通过创建UserProfile模型并将UserProfile与课程关联来扩展用户模型也是明智的。您可以查看如何扩展用户模型

所以,你真正应该做的是:

class Course(models.Model):
    name = models.CharField(max_length=30)
    description = models.CharField(max_length=100)

    # Make sure you first import UserProfile model before referring to it
    students = models.ManyToManyField(UserProfile, related_name = 'courses')

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("details:assess", kwargs={"id": self.id})

另外,请注意,添加和查询多对多关系没有什么不同。有关详细信息,请参阅。

是的,您可以使用外键。什么让你困惑?我添加了外键,但是当我根据用户进行查询时,我没有得到正确的结果。显示代码和您得到的结果,并解释这与您期望的不同。1。在模型上定义一个外键,指向auth.User;您可以使用自定义的相关名称;2.进行迁移;3.迁移;4.如果像这样工作,user=models.ForeignKey(user,default='1'),我已经从“用户应用程序”导入了用户