小编Cos*_*osy的帖子

具有默认值的外键上的Django 1.7迁移错误

我有一个关于测试我的应用程序的问题,包括具有默认值的ForeignKey modelfields上的迁移(参见下面的示例,模型RuleSet中的字段模式).

我不知道这是Django 1.7测试迁移中的错误还是我做错了什么

#models.py:

RULE_SET_MODE__ACTIVE = "Active"

def default_mode():
    return RuleSetMode.objects.get(name=RULE_SET_MODE__ACTIVE)

class RuleSetMode(models.Model):
    name = models.CharField(max_length=30)
    description = models.CharField(max_length=255)

class RuleSet(models.Model):
    name = models.CharField(max_length=30, unique=True)
    description = models.CharField(max_length=255)
    mode = models.ForeignKey(RuleSetMode, default=default_mode)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试了以下迁移步骤

  1. 使用默认值(函数)创建初始迁移
  2. 创建了一个没有默认值的初始迁移,并创建了第二个迁移,通过设置默认值来更改字段

他们都没有为我工作.因此,您可以看到问题与迁移字段本身无关.这与应用程序存在迁移的事实有关.

(在使用此解决方案的测试期间,覆盖save方法将是解决方案或禁用迁移:在Django 1.7中运行单元测试时禁用迁移,但我更喜欢设置默认属性)

#migrations file (altering the existing field):

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations
import myapp.models


class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0001_initial'),
    ]

    operations = [
        migrations.AlterField(
            model_name='ruleset', …
Run Code Online (Sandbox Code Playgroud)

migration django default foreign-keys

5
推荐指数
1
解决办法
3577
查看次数

标签 统计

default ×1

django ×1

foreign-keys ×1

migration ×1