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没有其他方法,然后重写模型?因为我有其他功能依赖于这个模型,所以我