0
我有一个模型(UserProfile模型)中的模型与一个外键分开的应用程序到我创建的另一个应用程序。当我尝试syncdb
时,我得到的是外键ID是NULL,即使我在该应用程序中有一个夹具。有没有办法指定YAML文件的加载顺序?Django - YAML App Fixtures订单冲突
这里的应用程序结构是什么样子 -
资料/
# models.py
class UserProfile(models.Model):
user = models.OneToOneField(User)
school = models.ForeignKey(School)
def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
# fixtures/initial_data.yaml
- fields:
username: admin
password: ***password hash here***
date_joined: 2012-02-01 01:00:00
email: [email protected]
last_name: Last
first_name: First
groups: []
is_active: true
is_staff: true
is_superuser: true
last_login: 2012-02-01 01:01:00
user_permissions: []
model: auth.user
pk: 1
- fields:
user: 1
school: 1
model: profile.UserProfile
pk: 1
学校/
# models.py
class School(models.Model):
name = models.CharField(max_length=100)
# fixtures/initial_data.yaml
- fields:
name: "School"
model: school.School
pk: 1
而且在syncdb
我得到:
IntegrityError: profile_userprofile.school_id may not be NULL
这必须意味着它在学校之前保存了UserProfile模型。所以,我想知道是否可以重新排列yaml文件或以某种方式将学校归入UserProfile而不允许学校为NULL。
在settings.py中,我正在加载school
,之后是profile
已安装的应用程序。
我欣赏指出的资源。设置natural_key.dependencies看起来像是用于序列化的解决方案,但它不会在syncdb期间设置依赖关系。谢谢你的信息。 – garromark 2012-02-28 13:08:32