我有一个名为 OneToOneFiled 的模型alg_id
,当我进入管理面板并更改现有对象中的此字段时,就会创建一个新对象,但我想用不同的对象覆盖相同的对象alg_id
。
当我更改其他简单文本字段时 - 一切正常。
如果我改变alg_id
对于一个,已经存在于数据库中,然后该对象被覆盖 - 如果我在这里收到警告会更好..
我怎样才能做到这一点?
附注本项目使用 Django 2.2.6 版本
models.py
:
from django.db import models
from django.utils.translation import gettext_lazy as _
class AchievementInfo(models.Model):
GROUPS = (
('Results', 'Results'),
('Service', 'Service'),
('Team', 'Team'),
('Development', 'Development')
)
algorithm_id = models.OneToOneField(
'core.Algorithms',
models.DO_NOTHING,
verbose_name=_('Alg id'),
primary_key=True,
)
role_key = models.CharField(_('Role'), max_length=25)
group = models.CharField(_('Group'), max_length=50, choices=GROUPS)
name = models.CharField(_('Name'), max_length=100)
web_name = models.CharField(_('Shown name'), max_length=75)
class Meta:
db_table = 'achievements_guide'
default_permissions = ()
ordering = ('web_name', 'role_key', 'algorithm_id')
verbose_name = _('Achievement')
verbose_name_plural = _('Achievements')
def __str__(self):
return f'{self.algorithm_id}: {self.name}, {self.web_name}, {self.role_key}'
admin.py
:
from django.contrib import admin
from achievements.models import AchievementInfo
@admin.register(AchievementInfo)
class AchiAdmin(admin.ModelAdmin):
list_display = ("web_name", "group", "role_key", "algorithm_id")
list_filter = ("web_name", "role_key")
raw_id_fields = ("algorithm_id", )