こんにちは、家賃と共同生活の趣味のプロジェクトを作成しようとしています。管理パネルをスタッフのダッシュボードとして使用して、このセクションでスタッフが CURD 操作を実行できるようにしたいと考えています私が表形式のインラインで使用する賃貸物件の物件画像の別の表.私は以下のスクリーンショットを共有しています
私のadmin.pyコードを以下に示します
from django.contrib import admin
from .models import RentProperties,RentPropertyImages
from django.utils.html import format_html
from django.contrib.admin.widgets import AdminFileWidget
from django.db import models
# Register your models here.
class RentPropertyImagesAdmin(AdminFileWidget):
"""Admin widget for showing clickable thumbnail of Image file fields"""
def render(self, name, value, attrs=None, renderer=None):
html = super().render(name, value, attrs, renderer)
if value and getattr(value, 'url', None):
html = format_html('<a href="{0}" target="_blank"><img src="{0}" alt="{1}" width="150" height="150" style="object-fit: contain;"/></a>', value.url, str(value)) + html
return html
class RentPropertyImagesInline(admin.TabularInline):
model=RentPropertyImages
formfield_overrides = {models.ImageField: {'widget': RentPropertyImagesAdmin}}
fk_name="property_image"
class ResntpropertiesAdmin(admin.ModelAdmin):
inlines=[
RentPropertyImagesInline
]
list_display=('posted_by','property_title','area','city','pincode','is_active')
list_filter=('is_active','city','ac','childrens_play_area','club_house','fire_safety','is_flat_pg_flatmate')
search_fields=('posted_by__username','city','area','pincode','state','property_code','property_title')
exclude=('posted_by',)
def save_model(self, request, obj, form, change):
if not obj.posted_by:
obj.posted_by = request.user
obj.save()
def has_add_permission(self, request, obj=None):
if request.user.is_superuser:
return True
if obj is not None and obj.posted_by != request.user:
return False
return True
def has_change_permission(self, request, obj=None):
if request.user.is_superuser:
return True
if obj is not None and obj.posted_by != request.user:
return False
return True
def has_delete_permission(self, request, obj=None):
if request.user.is_superuser:
return True
if obj is not None and obj.posted_by != request.user:
return False
return True
# def get_queryset(self, request):
# if request.user.is_superuser:
# return RentProperties.objects.all()
# else:
# return RentProperties.objects.filter(posted_by=request.user)
admin.site.register(RentProperties,ResntpropertiesAdmin)
しかし、ユーザーが自分のアイテムのみを取得するように制限しようとすると、たとえば get_queryset をオーバーライドすると、完全なリストが得られますが、プロパティテーブル内からすべての表行が削除され、has_view_permission オーバーライドを使用しようとしますが、機能していません。すべての inlinetablar を削除すると、同じ結果が得られます。
私が間違っていること、またはその方法を教えてください。