小编use*_*786的帖子

django-filter:使用request.user扩展过滤器查询

我需要在django-filter请求中添加一个额外的filter属性(在后台)。

我的模特:

class Event(models.Model):
  name=models.CharField(max_length=254)
  location=models.ForeignKey(Place)
  invited_user=models.ManyToManyField(User,null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

使用过滤器可以过滤具有相同位置的那些条目。可以了

进一步,我必须排除所有那些不是所邀请的用户的request.user条目(只有在用户具有权限的情况下才可以选择此过滤器属性)。

使用django-filter可能吗,如果可以,怎么办?

我的过滤器类:从模型导入事件中导入django_filters

class EventFilter(django_filters.FilterSet):
    class Meta:
        model = Event
        fields = ['location']
Run Code Online (Sandbox Code Playgroud)

我的工作基于:如何使用Django通用视图过滤表?

django filter django-models django-filter django-tables2

5
推荐指数
2
解决办法
3031
查看次数

django-tables2:在渲染方法中使用请求用户

我正在使用 djnago-tables2 来显示我的事件模型中的数据。我需要将当前请求的用户放入表的render方法中(进一步调用一个模型函数来获取当前用户的响应)。

我怎样才能做到这一点?

我的模特

class Event(models.Model):

    name=models.CharField(max_length=254)
    start=models.DateTimeField()
    end=models.DateTimeField()
    invited_user=models.ManyToManyField(User,blank=True)

    def getResponseFromUser(self, user):
        try:
            return Response.objects.filter(event=self, user=user).order_by('-pk')[0]
        except Exception:
            return None

class Response(models.Model):
    user=models.ForeignKey(User)
    event=models.ForeignKey(Event)
    timestamp=models.DateTimeField(auto_now_add=True)

    SEEN=0
    YES=1
    PROBABLY_YES=2
    PROBABLY_NO=3
    NO=4

    RESPONSE=(
        (SEEN, _('seen but undecided')),
        (YES, _('Yes')),
        (PROBABLY_YES, _('probably yes')),
        (PROBABLY_NO, _('probably no')),
        (NO, _('No')),
    )
    response=models.IntegerField( choices=RESPONSE, default=SEEN)

    @property
    def getResponseText(self):
        return self.RESPONSE[self.response][1]
Run Code Online (Sandbox Code Playgroud)

桌子

class EventTable(tables.Table):

    requestUser=None # to be set from request (externally)

    eventResponse = tables.Column(empty_values=(), verbose_name="Response", orderable=False)

    class Meta:
        model = Event
        # add class="paleblue" …
Run Code Online (Sandbox Code Playgroud)

django django-models django-tables2

3
推荐指数
1
解决办法
1427
查看次数