呈现用户特定数据

时间:2018-08-21 21:14:23

标签: django django-models django-views

我正在尝试创建一个Webapp,专门为用户呈现数据。 我必须进行建模,一种用于用户(内置于用户的djangos),另一种用于呈现的数据。 我为用户设计的模型:

class UserProfileInfo(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    def __str__(self):
        return self.user.username

我的数据模型:

class MyModel(models.Model):
    user_k = models.ForeignKey(User,related_name='RelatedName',on_delete=models.CASCADE)
    Date_Time = models.DateTimeField(default=timezone.now)
    DataOne = models.PositiveIntegerField(null=True)
    DataTwo = models.PositiveIntegerField(null=True)
    DataThree = models.PositiveIntegerField(null=True)

在我的views.py文件中,我有以下视图:

class MyView(DetailView):
    model = models.User
    context_object_name = 'mylist'
    template_name = 'my_app/example.html'
    def get_queryset(self):
        return User.objects.filter(user_k=self.request.user)

我无法解决的问题是出现此错误:

Cannot query "user": Must be "MyModel" instance.

我已经对其进行了多次Google搜索,还尝试了django文档。 我的猜测是问题可能出在我的模型中,我的目的是将第二个模型连接到用户名,但是我不确定。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

User没有user_k属性的原因,所以User.objects.filter(user_k=xxx)没有任何意义。

使用您的MyModel模型:

class MyView(DetailView):
    model = models.MyModel

    def get_queryset(self):
        return MyModel.objects.filter(user_k=self.request.user)

或使用您的UserProfileInfo模型:

class MyView(DetailView):
    model = models.UserProfileInfo

    def get_queryset(self):
        return UserProfileInfo.objects.filter(user=self.request.user)