我最近开始使用Django。请帮我弄清楚。我有一个数据库,存储有关网络设备的各种信息。在站点上,此信息显示在一个表中。我希望updated_by字段显示创建此表或上次修改此表的用户的全名。所有用户都在Django中注册,有以下字段:名姓我希望这两个字段一起显示在表中的updated_by字段中。例如,在网站上的表格的末尾写着:由员工更新:伊凡伊凡
我试着这样做:
from django.contrib.auth.models import User
updated_by = models.ForeignKey(User, verbose_name='Updated by an employee', on_delete=models.SET_DEFAULT, default='Employee deleted')
但我得到一个错误
OperationalError at /admin/mainapp/device/1/change/
no such column: device.updated_by_id
我的代码models.py:
from django.db import models
from django.contrib.auth.models import User
class Device(models.Model):
device_vendor = models.CharField(max_length=128, blank=True, verbose_name='Vendor')
device_model = models.CharField(max_length=128, blank=True, verbose_name='Model')
device_hostname = models.CharField(max_length=128, blank=True, verbose_name='Hostname')
device_serial_number = models.CharField(max_length=128, blank=True, verbose_name='Serial number')
device_description = models.TextField(blank=True, verbose_name='Description')
project = models.CharField(max_length=128, blank=True, verbose_name='Project')
updated_by = models.ForeignKey(User.get_full_name(), verbose_name='Updated by', on_delete=models.SET_DEFAULT, default='None')
# updated_by = models.CharField(max_length=128, verbose_name='Updated by')
updated_at = models.DateTimeField(auto_now=True, verbose_name='Updated at')
rack_id = models.ForeignKey(Rack, on_delete=models.CASCADE, verbose_name='Rack')
1条答案
按热度按时间vhmi4jdf1#
你可以获取用户的详细信息,它被用作另一个表的外键。假设型号名称为
Foo
:这将返回用户的全名。
更新
你可以覆盖你的保存方法来获取该用户的全名,并将其存储在另一个字段中: