如何检查用户是否在某个表中

时间:2017-03-31 04:26:42

标签: python django

我在django中有我的用户表,并且我创建了两个表(教师和学生)的所有用户不同。

这两个表都是从用户

获取fk

因此,为了进行授权,我如何检查某个用户是否在某个表中。

我需要这样检查

public class Solution {

    public int searchMatrix(ArrayList<ArrayList<Integer>> a, int b) {
        int r = a.size();
        int c = a.get(0).size();

        int start = 0;
        int end = r - 1;
        // default value is last row for edge case
        int biRow = r -1; // row to search column

        //binary search 1st value of rows
        while (start <= end) {
            int mid = (start + end) / 2;
            if (b == a.get(mid).get(0)) {
                return 1;
            }

            if (a.get(mid).get(0) < b && b < a.get(end).get(0)) {
                if (mid + 1 >= end) {
                    biRow = mid;
                    break;
                }
            } if (b < a.get(mid).get(0)) {
                end = mid - 1;
            } else {
                start = mid + 1;
            }
        }
        //binary search column of biRow
        start = 0;
        end = c-1;
        while (start <= end) {
            int mid = (start + end) / 2;
            if (b == a.get(biRow).get(mid)) {
                return 1;
            }
            if (b < a.get(biRow).get(mid)) {
                end = mid - 1;
            } else {
                start = mid + 1;
            }
        }
        return 0;
    }
}

我的模特是这样的。

def test_func(self):
    return self.request.user.check..if..it..exists..in..table

4 个答案:

答案 0 :(得分:3)

这取决于您的模型的设置方式。

如果您的教师模型看起来像这样;

class Teacher(models.Model):
    user = models.ForeignKey(User)

然后,您应该能够通过使用隐式backref来检查用户是否是教师;

self.request.user.teacher_set.exists()

由于问题已更新以显示模型与我预期略有不同,因此这是更新。

class Teacher(models.Model):
    user = models.OneToOneField(User)

这意味着backref会有所不同。

hasattr(self.request.user, "teacher")

正如你所提到的那样,你在django模板中这样做,我很确定以下内容是可行的:

{% if user.teacher %}

答案 1 :(得分:1)

由于您尚未发布模型,我将大致了解如何操作。

views.py -

中的

from .models import Teacher,Student

def test_func(request):
    user = request.user
    if (Teacher.objects.filter(user=user).count() > 0) or (Student.objects.filter(user=user).count > 0):
        #do your stuffs here..

答案 2 :(得分:1)

一种方法是查询两个表:

$scope.DeleteUser = function (user) {
        $http({
            method: "post",
            url: urls.api + 'User/BUser/' + user.UId,    
            data: user
        }).then(function (response) {
            alert(response.data);
        })
    };

答案 3 :(得分:0)

如果您在关系中加入“related_name”这个参数,则可以使用反向关系

class SomeTable(models.Model):
    user = models.ForeignKey(
        User, #Your user model or Django one
        verbose_name = "User",
        related_name = "inverse_relation_name"
    )

然后你必须使用关键字参数调用过滤器:

SomeTable.inverse_relation_name.filter(id=self.request.user.id) #You will get a queryset 

或者

SomeTable.inverse_relation_name.get(id=self.request.user.id) # You will get the object or a exception