Javascript Django-限制用户访问相同的值
我有一个日历,它应该连接到当前的管理员协会。管理员在日历中选择一个日期并注册表单,以便设置事件。但是当我登录到另一个管理员协会时,我仍然可以看到上一个管理员的事件。我想把它们分开 还是个新手,所以请用正确的方式引导我,感谢你们的帮助,伙计们Javascript Django-限制用户访问相同的值,javascript,python,django,python-3.x,calendar,Javascript,Python,Django,Python 3.x,Calendar,我有一个日历,它应该连接到当前的管理员协会。管理员在日历中选择一个日期并注册表单,以便设置事件。但是当我登录到另一个管理员协会时,我仍然可以看到上一个管理员的事件。我想把它们分开 还是个新手,所以请用正确的方式引导我,感谢你们的帮助,伙计们 models.py class Administrator(AbstractUser): # inherits the standard User-model ... association = models
models.py
class Administrator(AbstractUser):
# inherits the standard User-model
...
association = models.ForeignKey(Association)
class Event(models.Model):
name = models.CharField(max_length=50)
location = models.CharField(max_length=100)
start = models.DateTimeField(blank=False)
end = models.DateTimeField(blank=False)
allday = models.BooleanField()
description = models.TextField(max_length=200)
synced = models.BooleanField(default=False)
gid = models.CharField(default='', max_length=100)
association = models.ForeignKey(Association)
class Association(models.Model):
asoc_name = models.CharField(max_length=50, null=True, blank=True)
views.py
class calendar(ListView):
model = Event
template_name = 'calapp/calendar.html'
def get_queryset(self):
queryset = Event.objects.filter(association=self.request.user.association)
return queryset
def event_add_edit(request):
if request.method == 'POST':
res = {'success': False}
action = request.POST['action']
name = request.POST['name']
location = request.POST['location']
start = request.POST['start']
end = request.POST['end']
allday = request.POST['allday'] == 'true'
description = request.POST['description']
synced = request.POST['synced'] == 'true'
association = Association.objects.filter(asoc_name=request.user.association)
asoc = Association.objects.get(id=association)
if action == 'add':
Event.objects.create(
name=name,
location=location,
start=start,
end=end,
allday=allday,
description=description,
synced=synced,
association=asoc
)
res['success'] = True
res['message'] = 'added'
eid = Event.objects.latest('id').id
res['eid'] = eid
res['data'] = Event.objects.values().get(id=eid)
elif action == 'edit':
eid = request.POST['eid']
event = Event.objects.get(id=eid)
event.name = name
event.location = location
event.start = start
event.end = end
event.allday = allday
event.description = description
event.synced = synced
event.save()
res['success'] = True
res['message'] = 'edited'
res['eid'] = eid
res['data'] = Event.objects.values().get(id=eid)
return JsonResponse(res)
else:
raise Http404
calendar.html
<div id="container">
<div id="cal-content-grid">
<div id="week-days">
<ul>
<li class="week-day">Sunday</li>
<li class="week-day">Monday</li>
<li class="week-day selected">Tuesday</li>
<li class="week-day">Wednesday</li>
<li class="week-day">Thursday</li>
<li class="week-day">Friday</li>
<li class="week-day">Saturday</li>
</ul>
</div>
<div class="week-row">
<ul>
<li class="week-row-cell disabled">1</li>
<li class="week-row-cell disabled">2</li>
<li class="week-row-cell disabled">3</li>
<li class="week-row-cell disabled">4</li>
<li class="week-row-cell">5</li>
<li class="week-row-cell">6</li>
<li class="week-row-cell last">7</li>
</ul>
</div>
<div class="week-row">
<ul>
<li class="week-row-cell">1</li>
<li class="week-row-cell">2</li>
<li class="week-row-cell">3</li>
<li class="week-row-cell">4</li>
<li class="week-row-cell">5</li>
<li class="week-row-cell">6</li>
<li class="week-row-cell last">7</li>
</ul>
</div>
<div class="week-row">
<ul>
<li class="week-row-cell">1</li>
<li class="week-row-cell">2</li>
<li class="week-row-cell">3</li>
<li class="week-row-cell selected">4</li>
<li class="week-row-cell">5</li>
<li class="week-row-cell">6</li>
<li class="week-row-cell last">7</li>
</ul>
</div>
<div class="week-row">
<ul>
<li class="week-row-cell">1</li>
<li class="week-row-cell">2</li>
<li class="week-row-cell">3</li>
<li class="week-row-cell">4</li>
<li class="week-row-cell">5</li>
<li class="week-row-cell">6</li>
<li class="week-row-cell last">7</li>
</ul>
</div>
<div class="week-row">
<ul>
<li class="week-row-cell">1</li>
<li class="week-row-cell">2</li>
<li class="week-row-cell">3</li>
<li class="week-row-cell">4</li>
<li class="week-row-cell">5</li>
<li class="week-row-cell">6</li>
<li class="week-row-cell last">7</li>
</ul>
</div>
<div class="week-row last">
<ul>
<li class="week-row-cell">1</li>
<li class="week-row-cell">2</li>
<li class="week-row-cell">3</li>
<li class="week-row-cell">4</li>
<li class="week-row-cell">5</li>
<li class="week-row-cell">6</li>
<li class="week-row-cell last">7</li>
</ul>
</div>
</div>
</div>
</div>
周日
星期一
星期二
星期三
周四
星期五
星期六
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
{%csrf_令牌%}
-
-
-
-
开始
-
末端
-
整天
-
-
calendar.js
# parts of the code that may be useful
//generate event li
getEventli: function (event) {
var $li = $("<li class='event-li'>");
var $ename = $("<span class='event-li-name'>");
$ename.text(event.name);
$li.append($ename);
var $etime = $("<span class='event-li-time'>");
var start = new Date(event.start),
h = cal.getHourStr(start.getHours());
$etime.text(h);
$li.append($etime);
// add data-eid attribute for detail show
$li.data("eid", event.id);
$li.click(cal.showDetailForm);
cal.eventsById[event.id].eventli.push($li);
return $li;
},
#代码中可能有用的部分
//生成事件li
getEventli:函数(事件){
var$li=$(“”);
变量$ename=$(“”);
$ename.text(事件名称);
$li.append($ename);
var$etime=$(“”);
var start=新日期(event.start),
h=cal.getHourStr(start.getHours());
$etime.text(h);
$li.append($etime);
//为详细信息显示添加数据eid属性
$li.data(“eid”,事件id);
$li.单击(cal.showDetailForm);
cal.eventsById[event.id].eventli.push($li);
返回$li;
},
您的查询是错误的,您请求所有关联,但没有明确说明哪个用户将获得自己的模型
association = Administrator.objects.filter(id=request.user.id).values('association__asoc_name')
但我建议你用另一种方式重写模型
class Administrator(AbstractUser):
# inherits the standard User-model
# User is only here to refernce trought all models by FK
class Association(models.Model):
asoc_name = models.CharField(max_length=50, null=True, blank=True)
user = models.ForeignKey(Administrator)
class Event(models.Model):
name = models.CharField(max_length=50)
association = models.ForeignKey(Association)
# This kinde is esay to query and has some logic
# Example Event Query
q = Event.objects.filter(association__user__id=request.user.id)
# Example Association Query
q = Association.objects.filter(user=request.user.id)
# Exmpale Return Association and Event
q = Association.objects.filter(user=request.user.id).values('association__event__name')
您的查询是错误的,您请求所有关联,但没有明确说明哪个用户将获得自己的模型
association = Administrator.objects.filter(id=request.user.id).values('association__asoc_name')
但我建议你用另一种方式重写模型
class Administrator(AbstractUser):
# inherits the standard User-model
# User is only here to refernce trought all models by FK
class Association(models.Model):
asoc_name = models.CharField(max_length=50, null=True, blank=True)
user = models.ForeignKey(Administrator)
class Event(models.Model):
name = models.CharField(max_length=50)
association = models.ForeignKey(Association)
# This kinde is esay to query and has some logic
# Example Event Query
q = Event.objects.filter(association__user__id=request.user.id)
# Example Association Query
q = Association.objects.filter(user=request.user.id)
# Exmpale Return Association and Event
q = Association.objects.filter(user=request.user.id).values('association__event__name')
请将模型扩展到全视图。@marin-更新的模型请将模型扩展到全视图。@marin-更新的模型没有其他方法,然后重写模型?因为我有其他功能依赖于此模型,所以我现在有xD reaaaallyyy感谢您的帮助=DIs没有其他方法,然后重写模型?因为我有其他功能依赖于这个模型,所以我