You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模型返回拼接字符串及Admin关联字段显示、新增报错求助

解决Django Admin的两个问题:关联字段显示与新增报错

嘿,我来帮你搞定这两个问题:

一、让Osoba字段在Admin中显示全名

要让关联的osoba字段显示imie + nazwisko的拼接字符串,只需要在你的Osoba模型里重写__str__方法就行——Django默认用这个方法的返回值作为模型实例的显示文本,不管是在Admin的下拉选择还是其他场景。

示例代码:

from django.db import models

class Osoba(models.Model):
    imie = models.CharField(max_length=100)
    nazwisko = models.CharField(max_length=100)
    # 你的其他字段...

    def __str__(self):
        # 拼接名和姓返回
        return f"{self.imie} {self.nazwisko}"

修改后重启服务器,再去新增Umowy记录时,osoba的下拉选项就会显示全名了。

二、排查新增Umowy记录时的报错

因为你没给出具体的错误信息,我列几个最常见的排查方向,你可以逐一检查:

  • 检查Osoba外键的必填性:如果Umowy模型里的osoba字段是models.ForeignKey(Osoba, on_delete=models.CASCADE)(默认是必填的,null=False),那新增时必须选择一个已存在的Osoba记录,要是留空就会触发数据库层面的必填错误。如果允许osoba为空,需要把字段改成models.ForeignKey(Osoba, on_delete=models.SET_NULL, null=True, blank=True)。
  • 检查Admin配置:确认在UmowyAdmin类的fields或fieldsets里包含了osoba字段,如果漏了的话,表单里没有这个字段,但模型要求必填,就会报错。
  • 查看具体错误日志:页面上的黄色报错框(或者终端里的运行日志)会给出详细的错误原因,比如是不是字段类型不匹配、有自定义验证逻辑失败(比如模型里的clean()方法抛出了ValidationError)、或者数据库迁移未执行导致模型和数据库结构不一致。
  • 验证数据库迁移:如果最近修改过Umowy或Osoba模型,记得执行python manage.py makemigrations和python manage.py migrate,确保数据库结构和模型定义同步。

内容的提问来源于stack exchange,提问作者killerbees

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:00:39