如果Person的id不存在,我想创建一个模型对象,比如Person,否则我将获得Person对象.

创建新人的代码如下:

class Person(models.Model):
    identifier = models.CharField(max_length = 10)
    name = models.CharField(max_length = 20)
    objects = PersonManager()

class PersonManager(models.Manager):
    def create_person(self, identifier):
        person = self.create(identifier = identifier)
        return person

但是我不知道在哪里判断和获取现有的Person对象.

推荐答案

如果您正在寻找"update if Existes Else Create"用例,请参考@Zags excellent answer


Django已经有了get_or_createhttps://docs.djangoproject.com/en/dev/ref/models/querysets/#get-or-create

对你来说可能是:

id = 'some identifier'
person, created = Person.objects.get_or_create(identifier=id)

if created:
   # means you have created a new person
else:
   # person just refers to the existing one

Django相关问答推荐

Django模型ManyToManyField.Add不起作用

升级到4.2时,获取默认文件存储/存储是互斥的

POST_SAVE接缝有错误

Django中的判断约束

Django后端对印前判断请求未通过访问控制判断给我以下回应:否访问控制允许来源

如何将我的函数添加到值参数?

如何使用具有某些权限的 Django 组的转储数据和加载数据?

NoneType对象没有属性保存Django

如果上下文中缺少变量,如何使 Django 模板引发错误

Django:在模板中显示当前语言环境

magic有什么问题?

ImportError:无法导入设置

如何从 django 的 db 模型中获取字段类型字符串

如何在 Django 和 django-jsonfield 中将 JSONField 的默认值设置为空列表?

清理提交的表单数据中的 HTML

整数的Python正则表达式?

Django ALLOWED_HOSTS IP 范围

django python 日期时间设置为午夜

Django:DoesNotExist从何而来?

Heroku & Django:OSError: No such file or directory:'/app/{myappname}/static'