admin.py 中的查询集永远不会在 Django 2.2 中执行

queryset in admin.py never gets executed in django 2.2

我的代码最初是为 Django 1.8 实现的,现在(经过必要的更改)我 运行 它是为 Django 2.2 实现的。似乎以下计划仅显示非超级用户 his/her 自己的文件:

class Tiedostot3Admin(admin.ModelAdmin):
    fields = ['otsikko', 'kuvaus', 'tiedosto']
    list_display = ('otsikko','paivitetty')
    inlines = [
      Liitet3Inline,
  ]
    def queryset(self, request):
        print("queryset, request.user", request.user)
        qs = super(Tiedostot3Admin, self).queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(owner=request.user)
        
    def save_model(self, request, obj, form, change):
        print("save_model, request.user", request.user)
        obj.owner = request.user
        obj.save()
             

保存新文件时,我可以看到 save_model() 已执行,但我不知道如何执行 queryset()。它似乎总是为所有用户显示相同的列表。

models.py:

class Tiedostot3(models.Model):
    otsikko = models.CharField(max_length=250)
    kuvaus = RichTextField(blank=True)
    paivitetty = models.DateTimeField(auto_now_add=True, verbose_name="Päivitetty")
    tiedosto = models.FileField(upload_to='poytakirjat', verbose_name="Tiedosto", blank = True)
    owner = models.ForeignKey(User, null=True, blank=True, on_delete=models.CASCADE)
    
    class Meta:
        ordering = ['-paivitetty']
        verbose_name = "tiedosto"
        verbose_name_plural="tiedostot"
        
    def __unicode__(self):
        return unicode(self.otsikko)
        
class Liite3(models.Model):
    otsikko = models.CharField(max_length=250)
    tiedosto = models.FileField(upload_to='poytakirjat')
    doku = models.ForeignKey(Tiedostot3, related_name="liitteet", on_delete=models.CASCADE)
    
    class Meta:
        verbose_name_plural="Liitteet"
    
    def __unicode__(self):
        return unicode(self.otsikko)

页面:

实现get_queryset方法:

class Tiedostot3Admin(admin.ModelAdmin):
    fields = ['otsikko', 'kuvaus', 'tiedosto']
    list_display = ['otsikko','paivitetty']
    inlines = [Liitet3Inline]

    def get_queryset(self, request):
       qs = super(Tiedostot3Admin, self).get_queryset(request)
       if request.user.is_superuser:
          return qs
       return qs.filter(owner=request.user)
        
    def save_model(self, request, obj, form, change):
        print("save_model, request.user", request.user)
        obj.owner = request.user
        obj.save()