Django Admin: Using a custom widget for only one model field

前端 未结 4 1960

I have a DateTimeField field in my model. I wanted to display it as a checkbox widget in the Django admin site. To do this, I created a custom form widget. However, I do not

4条回答
  •  隐瞒了意图╮
    2020-12-04 11:39

    After digging into the admin, model field and form field code, I believe the only way to carry out what I want is by creating a custom model field:

    models.py

    from django.db import models
    from widgets import ApproveStopWidget
    
    class ApproveStopModelField(models.DateTimeField):
        pass
    
    class Stop(models.model):
        # Other fields
        approve_ts = ApproveStopModelField('Approve place', null=True, blank=True)
    

    admin.py

    from widgets import ApproveStopWidget
    from models import ApproveStopModelField
    
    class StopAdmin(admin.ModelAdmin):
        formfield_overrides = {
            ApproveStopModelField: {'widget': ApproveStopWidget }
        }
    

    It gets the job done.

    For the time being, I'll leave the question unanswered because I have the habit of missing the obvious. Perhaps some Django smartypants has a better solution.

提交回复
热议问题