以下是我想要设置几个模型的代码:
from django.db import models
class A(models.Model):
x = models.CharField(max_length = 2)
class B(models.Model):
a = models.ForeignKey(A)
y = models.CharField(max_length = 2, default = a.x)
然而,当我运行python manage.py syncdb
时,它告诉我,ForeignKey对象a没有属性x。我搜索了Django文档,到目前为止一直无法找到我的答案。希望代码的含义是清楚的。我如何实际实现这个目标?
提前致谢!
答案 0 :(得分:3)
您不能将变量放在字段的默认属性中 - 它必须是常量或可调用的。
如果你真的需要这样做,我猜一种方法是在__init__
中这样做:
class B(models.Model):
def __init__(self, *args, **kwargs):
super(B, self).__init__(*args, **kwargs)
if self.a and not self.b:
self.b == self.a.x
但我必须说我不明白你为什么要这样做,因为你只是复制一个已经可以通过a.x
直接访问的值。
答案 1 :(得分:0)
要定义多对一关系,您必须使用django.db.models.ForeignKey.
a= models.ForeignKey(A)