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