whieronymus
whieronymus

Reputation: 301

Django TabularInline, only have readonly_fields but my FK objects is still showing up and editable

I'm creating a read-only Tabular Inline in the Admin and I can't get rid of this extra dropdown for StatusObject. As you can see I only have the 3 readonly_fields but an extra field is being displayed for TaskStatus.status and it's editable. Any idea why? I'm sure I'm overlooking something simple.

TabularInline

class TaskStatusInline(admin.TabularInline):
    model = TaskStatus
    extra = 0

    readonly_fields = [
        'status_name',
        "updated_by",
        'timestamp'
    ]

    can_delete = False

    def has_add_permission(self, request, obj=None):
        return False

    def status_name(self, obj):
            return obj.status.name

Models

class TaskStatus(models.Model):
    class Meta:
        ordering = ['-timestamp']

    status = models.ForeignKey('status')
    task = models.ForeignKey('Task', related_name="task_status")
    timestamp = models.DateTimeField(auto_now_add=True)
    updated_by = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True)


class Status(models.Model):
    class Meta:
        unique_together = ['status', 'substatus']
        verbose_name_plural = "status"
        ordering = ['code']

    name = models.CharField(max_length=50)
    status = models.CharField(max_length=25)
    substatus = models.CharField(max_length=25)
    code = models.IntegerField()

Upvotes: 0

Views: 195

Answers (1)

Written
Written

Reputation: 655

class TaskStatusInline(admin.TabularInline):
    model = TaskStatus
    extra = 0
    fields = [
        'status_name',
        'updated_by',
        'timestamp'
    ]
    readonly_fields = [
        'status_name',
        "updated_by",
        'timestamp'
    ]

Upvotes: 2

Related Questions