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()
我的代码最初是为 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()