【发布时间】:2012-03-07 21:26:27
【问题描述】:
为模型中的外键字段设置默认值的最佳方法是什么?假设我有两个模型,Student 和Exam,学生有exam_taken 作为外键。理想情况下,我将如何为其设置默认值?这是我的努力记录
class Student(models.Model):
....
.....
exam_taken = models.ForeignKey("Exam", default=1)
有效,但预感有更好的方法。
def get_exam():
return Exam.objects.get(id=1)
class Student(models.Model):
....
.....
exam_taken = models.ForeignKey("Exam", default=get_exam)
但这会失败,因为同步时表不存在错误。
任何帮助将不胜感激。
【问题讨论】:
-
@NitzanTomer 它用于 AdminModelField。以前看过。
-
@TomIngram:
default=get_exam()将立即调用get_exam并永久存储该值,而default=get_exam存储稍后将在每次使用default属性时调用的方法,以获取那一刻的价值。它通常与日期时间一起使用,即default=datetime.now,notdefault=datetime.now()。 -
@TomIngram:我不是在争论一种方法相对于另一种方法的优点。我的意思只是它是有效的,而且作者似乎想要那样。
-
@TomIngram:不同的是,当你添加括号时,它不再是“可调用的”;它是一个静态值,与只放一个整数没有什么不同。
标签: django foreign-keys default