如何实现Django动态修改model字段定义属性

如何实现Django动态修改model字段定义属性,第1张

Django可以获取一个model里字段定义的属性:

User._meta.get_field_by_name('username')

返回的是tuple,所以没法修改

数据库中有一数据表table_a,且该表没有主键也无唯一键,有一列row1数据都是不同的(没有唯一键),对应的django中的model为:

class TableA(models.Model):

row1 = models.CharField(primary_key=True, max_length=36)

row2 = models.CharField(max_length=36)

row3 = models.CharField(max_length=36)

class Meta:

db_table = u'table_a'

django中对应的model设置row1为主键,一切正常

如果row1有重复数据,model在过滤的时候去重,使用model一切正常

objs = TableA.objects.filter(Q('取出row1中的重复项'))

如果要 *** 作那些重复项(只有row1中的数据是重复的),但这些重复项中row2和row3的数据都是不同的

如果能动态设置model字段属性就都解决了

当然直接用sql也可以

动态设置django的model field的默认值:

1

2

3

4

5

6

7

8

def get_default_ignore_fort():

cur_env =ENV.upper()

return any(i in cur_env for i in ('UAT', 'FAT'))

class Application(TimestampedModel):

name = models.CharField(max_length=255, null=True)

ignore_fort = models.BooleanField(default=get_default_ignore_fort)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11509772.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存