django如何重新设置id字段(2023年最新分享)

导读:很多朋友问到关于django如何重新设置id字段的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

如何更新Django 的ManyToMany 字段

更新Django 的ManyToMany 字段:

1、在创建一个新的的时候:

p1=Post.objects.create(title=title,content=content,pub_date=pub_date,author=author)

p1.label.add(p)

其中label是ManyToMany 字段。

2、更新的时候:

p1=Post.objects.filter(id=num).save(title=title,content=content,pub_date=pub_date,author=author)

3、如果此时误用update,则成了批量更新,会发生错误。

django如何重新设置id字段(2023年最新分享)  第1张

Django使用save新增一条数据之后如何获取自增id

back = models.Back.objects.get(bookname=bookname)    # 查询你保存的那本书的记录

print(back.id)    # 打印出你要的新增记录的id值

django怎样获得框架自动定义的自增id字段

django自定义字段类型,实现非主键字段的自增

# -*- encoding: utf-8 -*-from django.db.models.fields import Field, IntegerFieldfrom django.core import checks, exceptionsfrom django.utils.translation import ugettext_lazy as _class AutoIncreField(Field):

description = _(\"Integer\")

empty_strings_allowed = False

default_error_messages = { \'invalid\': _(\"\'%(value)s\' value must be an integer.\"),

} def __init__(self, *args, **kwargs):

kwargs[\'blank\'] = True

super(AutoIncreField, self).__init__(*args, **kwargs) def check(self, **kwargs):

errors = super(AutoIncreField, self).check(**kwargs) # 每张表只能设置一个字段为自增长字段,这个字段可以是主键,也可以不是主键,如果不是主键,则必须设置为一种“键(key)”

# (primary key)也是键(key)的一种,key还包括外键(foreign key)、唯一键(unique key)

errors.extend(self._check_key()) return errors def _check_key(self):

if not self.unique: return [

checks.Error( \'AutoIncreFields must set key(unique=True).\',

obj=self,

id=\'fields.E100\',

),

] else: return [] def deconstruct(self):

name, path, args, kwargs = super(AutoIncreField, self).deconstruct() del kwargs[\'blank\']

kwargs[\'unique\'] = True

return name, path, args, kwargs def get_internal_type(self):

return \"AutoIncreField\"

def to_python(self, value):

if value is None: return value try: return int(value) except (TypeError, ValueError): raise exceptions.ValidationError(

self.error_messages[\'invalid\'],

code=\'invalid\',

params={\'value\': value},

) def db_type(self, connection):

return \'bigint AUTO_INCREMENT\'

def rel_db_type(self, connection):

return IntegerField().db_type(connection=connection) def validate(self, value, model_instance):

pass

def get_db_prep_value(self, value, connection, prepared=False):

if not prepared:

value = self.get_prep_value(value)

value = connection.ops.validate_autopk_value(value) return value def get_prep_value(self, value):

value = super(AutoIncreField, self).get_prep_value(value) if value is None: return None

return int(value) def contribute_to_class(self, cls, name, **kwargs):

assert not cls._meta.auto_field, \"A model can\'t have more than one AutoIncreField.\"

super(AutoIncreField, self).contribute_to_class(cls, name, **kwargs)

cls._meta.auto_field = self def formfield(self, **kwargs):

return None

django模型,如何动态设置查询的字段?

假设有这样一个字典a={\'id\':\'123\'}

那么获取mymodel这个对象的话,可以通过这样的一种方式

mymodel.objects.get(**a)

获取这个对象的id就mymodel.objects.get(**a).id即可

只要字典的key是mymodel中的字段就可以。希望有帮助

Django 主键自增

from django.db import models

# Create your models here.

class Student(models.Model):

    student_id = models.BigAutoField(primary_key=True)

这是model定义。

默认情况下,自增id都是从1开始计数的。如果你想从10001开始,就需要手动创建一个对象,为其设置student_id为10001,以后创建对象的studeng_id就从10002开始自动增加。

first_student =models.Student(student_id=10001)

first_student.save()

更多相关内容参考刘江的Django教程

django表单widget的attrs参数能修改name和id生成方式吗?

强大的Django标识必须支持修改。

widgets = {

\'name\': forms.TextInput(attrs={

\'class\': \'text-input\',

\'name\': \'email\',

\'id\': \'email_id\'

})

}

结语:以上就是首席CTO笔记为大家整理的关于django如何重新设置id字段的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django如何重新设置id字段的相关内容别忘了在本站进行查找喔。

以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!

版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023-09-23 13:13
下一篇 2023-09-23

相关推荐

发表回复

登录后才能评论