[英]How to set a CSV file read-only for direct access and edit only through a Python UI?
[英]How to set db model fields to just read-only even a superuser should be able to edit it
我嘗試過這種方式,就像我們使用primary keys
但它並沒有像我想要的那樣工作。 我希望某些字段不能從Django Admin
編輯我們可以使用權限管理它,但我希望它適用於所有人,即使是超級用戶也不應該能夠更改值
我試過這種方式
#models.py
class Payments(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, verbose_name="Payment Made By",)
paymentForOrderID = models.CharField(max_length=200, null=True, blank=True,editable=False, verbose_name="Payment For Order ID")
paymentMethodUsed = models.CharField(max_length=200, null=True, blank=True, verbose_name="Method Used")
aproxTimeAndDateOfPayment = models.CharField(max_length=200, null=True, blank=True,editable=False, verbose_name="Approx Date/Time Of Payment")
totalAmountPaid = models.CharField(max_length=200, null=True, blank=True,editable=False, verbose_name="Amount Paid")
paymentDetails = models.TextField(null=True, blank=True,editable=False,verbose_name="Details")
createdAt = models.DateTimeField(auto_now_add=True)
_id = models.AutoField(primary_key=True,editable=False, verbose_name="Entry ID")
def __str__(self):
return str(self.createdAt)
當我打開它時這樣做,它只顯示可編輯的字段,而不顯示其他字段。
可能有一些更好的方法來做到這一點,但據我所知。 .... 如果你想閱讀不可編輯的字段,你可以從admin.py
添加list_display
來管理它在你的情況下保持模型不變......
#models.py
class Payments(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, verbose_name="Payment Made By",)
paymentForOrderID = models.CharField(max_length=200, null=True, blank=True,editable=False, verbose_name="Payment For Order ID")
paymentMethodUsed = models.CharField(max_length=200, null=True, blank=True, verbose_name="Method Used")
aproxTimeAndDateOfPayment = models.CharField(max_length=200, null=True, blank=True,editable=False, verbose_name="Approx Date/Time Of Payment")
totalAmountPaid = models.CharField(max_length=200, null=True, blank=True,editable=False, verbose_name="Amount Paid")
paymentDetails = models.TextField(null=True, blank=True,editable=False,verbose_name="Details")
createdAt = models.DateTimeField(auto_now_add=True)
_id = models.AutoField(primary_key=True,editable=False, verbose_name="Entry ID")
def __str__(self):
return str(self.createdAt)
但添加PaymentManager
在admin.py
你的admin.py
應該像
from django.contrib import admin
from .models import Payments
class PaymentsAdmin(admin.ModelAdmin):
list_display = ['_id','user', 'paymentForOrderID', 'paymentMethodUsed','aproxTimeAndDateOfPayment','totalAmountPaid','createdAt','paymentDetails']
ordering = ['createdAt']
admin.site.register(Payments, PaymentsAdmin)
這樣您就可以從列表視圖中讀取值,但是當您打開它時,不可編輯的字段將不會顯示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.