我希望ForeignKey的每個實例具有不同的默認值,具體取決於它在父模型中的屬性。做的時候如何爲外鍵中的特定字段指定默認的外地字段值?
class Day(models.Model):
date = models.DateField(unique=True)
manager_shift = models.ForeignKey('Shift') # Shift.shift_type should be "M"
lead_shift = models.ForeignKey('Shift') # Shift.shift_type should be "L"
early_day_shift = models.ForeignKey('Shift') # Shift.shift_type should be "ED"
late_day_shift = models.ForeignKey('Shift') # Shift.shift_type should be "LD"
swing_shift = models.ForeignKey('Shift') # Shift.shift_type should be "SW"
early_evening_shift = models.ForeignKey('Shift') # Shift.shift_type should be "EM"
late_evening_shift = models.ForeignKey('Shift') # Shift.shift_type should be "LM"
class Shift(models.Model):
user = models.ForeignKey('User', limit_choices_to={'is_staff': True}, blank=False)
shift_type = models.CharField(max_length=2, choices=SHIFT_TYPE_CHOICES, blank=False)
SHIFT_TYPE_CHOICES = {
('M', 'Manager'),
('L', 'Lead'),
('ED', 'Early Day'),
('LD', 'Early Day'),
('SW', 'Swing'),
('EM', 'Early Evening'),
('LM', 'Late Evening'),
}
在這種情況下,
所以:
的插圖可能使這更清楚
Day.manager_shift = Shift()
Day.manager_shift.shift_type應該是 「M」 自動
我明白你的意思,但以同樣的方式你可以爲未指定值的模型的字段指定默認值,對於我來說,你可以爲正在創建新實例的字段指定默認的外部字段值。 – Ben174 2012-07-11 05:18:10
是的,但你會用什麼作爲價值?唯一對我有意義的是使用另一個模型的主鍵(因爲這是唯一可以唯一標識該模型中的一行)。 – mgibsonbr 2012-07-11 05:21:05