Python 如何将用户模型引用到我的应用程序模型并提供外键
我使用的是Django Cookiecutter,它使用Django Allauth来处理所有身份验证,并且安装了一个名为user的应用程序,它处理与用户相关的所有事情,如注册、注销等 我正在为用户共享models.py文件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.
@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'),我已经从“用户应用程序”导入了用户