簡體   English   中英

如果在 Django 中將一個屬性設置為 true,如何將字段/模型設置為只讀?

[英]How to set fields/model to readonly if one attribute is set to true in Django?

所以,我得到了三個類:

class User(...):
    #... other fields
    name = models.CharField()

class Equipment(...):
    #... other fields 
    inUse = models.Boolean(default=False)

class Ticket(...):
    #... Other fields
    user = models.ForeignKey(...)
    equipment = models.ForeignKey(...)
    ended = models.Boolean(default=False)

現在,當我創建一個新的Ticket ,設備的“inUse”屬性更改為 True,因此我不能將相同的Equipment給多個User 問題是,當我將Ticket設置為“結束”時,我仍然可以將其更改為“未結束”。 一旦我將Ticket的“結束”屬性設置為 True,我就不想再改變它。

PS:在設置新Ticket或將其更改為“結束”時,我將覆蓋方法 save 以在Equipment進行更改。

管理文件

from django.contrib import admin

from .models import Equipamento, TipoEquipamento, Funcionario, Setor, Ticket

# Register your models here.
class EquipamentoAdmin(admin.ModelAdmin):
    list_display = ['codigo', 'categoria', 'descricao', 'ativo', 'emUso']
    search_fields = ['codigo', 'descricao']

class FuncionarioAdmin(admin.ModelAdmin):
    list_display = ['nome', 'setor', 'email']
    search_fields = ['codigo', 'nome']
    

class TicketAdmin(admin.ModelAdmin):
    list_display = ['id', 'get_user_name', 'get_equipment_name', 'dataDevolucao', 'finalizado']
    autocomplete_fields = ['usuario', 'equipamento']
    
    def get_user_name(self, obj):
        return obj.usuario.nome
    
    def get_equipment_name(self, obj):
        return obj.equipamento.descricao

    get_user_name.short_description = 'Funcionario'
    get_equipment_name.short_description = 'Equipamento'

愚蠢的問題,幾分鍾后我意識到我可以在模型中設置一個像“can Change”這樣的字段,這樣當我更改Status該字段將設置為 false,並且我將無法再更改該模型。 Daaah,還是謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM