Django 模型字段可调用默认不工作
Django Model Field Callable Default Not Working
Django 的可调用模型字段默认值已损坏。当我将模型字段默认值设置为可调用(请参阅下面的迁移文件)时,所有模型都会获得相同的值,即使每次调用时可调用 returns 不同的值也是如此。
这适用于以前的领域,所以我很困惑为什么 Django 在这个领域会失败。在我迁移之前一切正常,当检查数据库列时显示所有值都相同。
迁移文件:
# -*- coding: utf-8 -*-
# Generated by Django 1.10.1 on 2018-05-10 14:53
from __future__ import unicode_literals
from django.db import migrations, models
import screen.models
class Migration(migrations.Migration):
dependencies = [
('screen', '0064_employer_enable_show_question_template_tags'),
]
operations = [
migrations.AddField(
model_name='question',
name='key',
field=models.TextField(default=screen.models.generate_question_key),
),
]
型号
def generate_question_key():
# return a random string 64 characters long
return generate_random_hash(64)
class Question(Model):
name = TextField()
points = PositiveIntegerField() # how much it's worth
time_spent = PositiveIntegerField(default = 0) # seconds
score = PositiveIntegerField(default = 0)
key = TextField(default = generate_question_key)
默认returns不同值:
>>> import screen
>>> screen.models.generate_question_key()
'JpZzloZkiLyvPLrDZ9764VTWkNUon1FD08mGKODa2uiqW1nV422HXVvt78MsW7aR'
>>> screen.models.generate_question_key()
'NHyTwPDA2cAAsTeIR77INLMM6Ik14EQ6vTlrTv4ZwV56nt6jGEtR8bKn8iyWDeMA'
>>> screen.models.generate_question_key()
'q2aALA7WmvtiKLiGXfNEStpKhOFcNpMDrJ8Y9sv6mwWNsUU6mdgMlgaW5yJJ1yEI'
>>>
Django 的可调用模型字段默认值已损坏。当我将模型字段默认值设置为可调用(请参阅下面的迁移文件)时,所有模型都会获得相同的值,即使每次调用时可调用 returns 不同的值也是如此。
这适用于以前的领域,所以我很困惑为什么 Django 在这个领域会失败。在我迁移之前一切正常,当检查数据库列时显示所有值都相同。
迁移文件:
# -*- coding: utf-8 -*-
# Generated by Django 1.10.1 on 2018-05-10 14:53
from __future__ import unicode_literals
from django.db import migrations, models
import screen.models
class Migration(migrations.Migration):
dependencies = [
('screen', '0064_employer_enable_show_question_template_tags'),
]
operations = [
migrations.AddField(
model_name='question',
name='key',
field=models.TextField(default=screen.models.generate_question_key),
),
]
型号
def generate_question_key():
# return a random string 64 characters long
return generate_random_hash(64)
class Question(Model):
name = TextField()
points = PositiveIntegerField() # how much it's worth
time_spent = PositiveIntegerField(default = 0) # seconds
score = PositiveIntegerField(default = 0)
key = TextField(default = generate_question_key)
默认returns不同值:
>>> import screen
>>> screen.models.generate_question_key()
'JpZzloZkiLyvPLrDZ9764VTWkNUon1FD08mGKODa2uiqW1nV422HXVvt78MsW7aR'
>>> screen.models.generate_question_key()
'NHyTwPDA2cAAsTeIR77INLMM6Ik14EQ6vTlrTv4ZwV56nt6jGEtR8bKn8iyWDeMA'
>>> screen.models.generate_question_key()
'q2aALA7WmvtiKLiGXfNEStpKhOFcNpMDrJ8Y9sv6mwWNsUU6mdgMlgaW5yJJ1yEI'
>>>