Я хочу редактировать панель администратора, которая открывается только со списком элементов конкретного пользователя и не хочу идти на компромисс с TabularInline в той же таблице.

Привет я пытаюсь создать проект по аренде и совместному проживанию для этого я хочу использовать панель администратора как панель персонала, где персонал может выполнять CURD операции в этом разделе есть одно главное условие персонал не может редактировать друг друга список недвижимости, и у меня есть другая таблица для изображений недвижимости, где аренда-продажа, которую я использую в табличной форме inline .Я делюсь снимком экрана ниже screen shot of dashboard

мой код 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)

но когда я пытаюсь ограничить пользователя, чтобы он получал только свои предметы, например for user i only want to get his item but not want to compromise with tabularinline Если я переопределю get_queryset, это даст мне идеальный список, но удалит всю табличную строку из таблицы свойств, Я также пытаюсь использовать переопределение has_view_permission, но это не работает, это дает мне тот же результат, он удаляет все inlinetablar.

пожалуйста, подскажите, что я делаю неправильно или как это сделать .

Вернуться на верх