Adil Ijaz
Adil Ijaz

Reputation: 352

how to convert this model into non editable model in admin of django?

I create a model but I need a non-editable model. When I visit the model it's just displaying text, not giving any option of update the record in admin panel.

model.py

class Contact(models.Model):
    name = models.CharField(max_length=160)
    email = models.EmailField()
    subject = models.CharField(max_length=255)
    message = models.TextField()

    def __str__(self):
        return self.subject

While searching I get information about readonly but I do not still understand how to use it.

Upvotes: 0

Views: 602

Answers (1)

ruddra
ruddra

Reputation: 51988

There are two ways to do this. One, make editable=False for all the fields, then it will not be edible anywhere(modelform and adminsite):

class Contact(models.Model):
    name = models.CharField(max_length=160, editable=False)
    email = models.EmailField(editable=False)
    subject = models.CharField(max_length=255, editable=False)
    message = models.TextField(editable=False)

Two, in adminsite, use readonly_fields:

class ContactAdmin(admin.ModelAdmin):
    readonly_fields = ('name', 'email', 'subject', 'message')

admin.site.register(Contact, ContactAdmin)

Upvotes: 1

Related Questions