我在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
答案 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