Coverage for src/wishlists/admin.py: 64%
25 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-08-04 12:59 +0300
« prev ^ index » next coverage.py v7.9.2, created at 2025-08-04 12:59 +0300
1from django.contrib import admin
2from django.utils.html import format_html
3from django.urls import reverse
5from src.wishlists.models import Wishlist
8@admin.register(Wishlist)
9class WishlistAdmin(admin.ModelAdmin):
10 def product_display(self, obj):
11 if obj.product:
12 return str(obj.product)
14 return '-'
16 product_display.short_description = 'Product'
18 def product_info(self, obj):
19 if obj.product:
20 app_label = obj.product._meta.app_label
21 model_name = obj.product._meta.model_name
22 url = reverse(
23 f'admin:{app_label}_{model_name}_change', args=[obj.product.id]
24 )
25 return format_html('<a href="{}">{}</a>', url, str(obj.product))
27 return '-'
29 product_info.short_description = 'Product'
30 product_info.allow_tags = True
32 list_display = (
33 'id',
34 'user',
35 'product_display',
36 'created_at',
37 )
38 search_fields = ('user__username',)
39 readonly_fields = ('created_at', 'product_info')
40 ordering = ('-created_at',)
41 exclude = ('content_type', 'object_id')