2
在OneToOneField無線電按鈕映射我有以下幾點:Django的 - 管理界面
class A(models.Model):
true_b = models.OneToOneField('B', related_name='is_true')
def save(self, *args, **kwargs):
if self.true_b not in self.b_set.all():
raise ValueError('True_b has to be among those B that refer to this A')
super(A, self).save(*args, **kwargs)
class B(models.Model):
a = models.ForeignKey(A)
...
@property
def is_true(self):
return a.true_b == self
這將產生具有所有項目在B
一個下拉列表,在管理界面爲true_b
,和驗證將確保所選項目實際上是指回到A
。
而不是在管理界面中有一個下拉列表,我怎麼能對B
中的每個條目有無線電字段,將選定的項目映射到true_b
值?
這樣,選擇項目(而不是查找它的名稱並從下拉列表中選擇)將更容易,用戶將無法選擇任何不屬於A
的項目。
是否有可能很快讓'true_b'這個特定的變化而無需重寫爲模型的整個形式? – abstractpaper
您不必重寫整個表單,嘗試創建ModelForm,並且在該字段的init方法更改小部件中。選中此項:https://docs.djangoproject.com/en/1.3/topics/forms/modelforms/ – szaman