我正在尝试向editable=False自定义管理表单添加一个字段,但出现错误:
django.core.exceptions.FieldError: 'help_num' cannot be specified for
Investigation model form as it is a non-editable field
Run Code Online (Sandbox Code Playgroud)
这是真的,在我的模型中,我将其设置为:
模型.py
help_num = models.CharField(max_length=17, unique=True, default=increment_helpdesk_number, editable=False)
Run Code Online (Sandbox Code Playgroud)
表格.py
class HelpDeskModelForm(forms.ModelForm):
class Meta:
model = HelpDesk
fields = [
"help_num",
"help_types",
...
"help_summary"
]
Run Code Online (Sandbox Code Playgroud)
管理文件
class HelpDeskModelAdmin(admin.ModelAdmin):
readonly_fields=('help_num',)
form = HelpDeskModelForm
Run Code Online (Sandbox Code Playgroud)
我添加readonly到 admin.py,但仍然收到错误。我究竟做错了什么?
我正在尝试在我的 helpdesk/models.py 中创建一个自定义的 primary_key,我将用它来跟踪我们的服务台票证。我正在为我们的办公室编写一个小型滴答系统。
也许有更好的方法?现在我有:
id = models.AutoField(primary_key=True)
Run Code Online (Sandbox Code Playgroud)
这在数据库中增加为;1、2、3、4....50...
我想接受这个 id 分配,然后在一个函数中使用它,将它与一些附加信息(如日期和名称“HELPDESK”)结合起来。
我使用的代码如下:
id = models.AutoField(primary_key=True)
def build_id(self, id):
join_dates = str(datetime.now().strftime('%Y%m%d'))
return (('HELPDESK-' + join_dates) + '-' + str(id))
ticket_id = models.CharField(max_length=15, default=(build_id(None, id)))
Run Code Online (Sandbox Code Playgroud)
这个想法是数据库中的条目将是:
HELPDESK-20170813-1
HELPDESK-20170813-2
HELPDESK-20170814-3
...
HELPDESK-20170901-4
...
HELPDESK-20180101-50
...
Run Code Online (Sandbox Code Playgroud)
然后我想使用它作为 ForeignKey 将服务台票证链接到数据库中的其他一些模型。
现在回来的是:
HELPDESK-20170813-<django.db.models.fields.AutoField>
Run Code Online (Sandbox Code Playgroud)
这篇文章有效 -自定义自动增量字段 Django Curious 如果有更好的方法。如果没有,这就足够了。