Django adminsite: как использовать reverse ()? - PullRequest
0 голосов
/ 24 января 2020

Надеюсь, моего названия достаточно, чтобы понять мой вопрос

это мой admin.py

@admin.register(studentDiscount)
class studentDiscount(admin.ModelAdmin):
    list_display = ('Students_Enrollment_Records', 'Discount_Type','my_url_field')
    ordering = ('pk',)
def my_url_field(self, obj):
    obj_id = obj.Students_Enrollment_Records.Student_Users.id

    url = reverse('record', args=[obj_id])
    return format_html(
        '<a href="{url}" target="_blank">{obj_id}</a>',
        url=url, obj_id=obj_id
    )

это мой model.py

class studentDiscount(models.Model):
    Students_Enrollment_Records = models.ForeignKey(StudentsEnrollmentRecord, related_name='+',
                                                    on_delete=models.CASCADE, null=True)
    Discount_Type = models.ForeignKey(Discount, related_name='+', on_delete=models.CASCADE, null=True,blank=True)

this результат, который я хочу

enter image description here

если я нажму на ссылку Скачать , то go будет указывать c html по идентификатору студента

это результат, если я нажму ссылку Скачать

enter image description here

это ошибка, которую я получаю с моим текущий admin.py, пожалуйста, помогите мне, ребята

enter image description here

это мои views.py

def record(request):
  return render(request, 'accounts/adminstudentrecord.html')

my url.py

path('record/', accounts.views.record, name='record'),

ОБНОВЛЕНИЕ

когда я попробовал ответить на вопрос г-н @ Аши sh

enter image description here

но когда я нажимаю ссылку для скачивания, я получаю эту ошибку

enter image description here

это мой текущий admin.py

def my_url_field(self, obj):
    obj_id = obj.Students_Enrollment_Records.Student_Users.id

    url = reverse('record', args=[obj_id])
    return format_html(
        "<a href='{url}' target='_blank'>Download</a>",
        url=url, obj_id=obj_id
    )

а это мой текущий url.py

path('record/<args>/', accounts.views.record, name='record'),

1 Ответ

0 голосов
/ 24 января 2020
path('record/<args>/', accounts.views.record, name='record')

view.py

def record(request, args):
    return render(request, 'accounts/adminstudentrecord.html')
...