【发布时间】:2012-03-26 01:06:00
【问题描述】:
我正在使用 django 1.2 我有两个模型。
编辑:我刚刚找到了一个更好的例子:
class Parent(models.Model):
name = models.CharField(max_length=255)
favorite_child = models.ForeignKey(Child)
class Child(models.Model):
name = models.CharField(max_length=255)
myparent = models.ForeignKey(Parent)
在这个例子中,我希望能够选择一个最喜欢的孩子,但问题是管理员会给我所有的孩子供我选择,而不仅仅是我当前正在编辑的父母的孩子。
原始示例:
class Version(models.Model):
name = models.CharField(max_length = 255)
platform = models.ForeignKey("Platform",related_name='version_platform')
class Platform(models.Model):
name = models.CharField(max_length = 255)
default_version = models.ForeignKey(Version,related_name='platform_default_version')
我希望 django 管理员在我选择 default_version 时限制下拉列表,以便我只能选择具有当前平台的那些版本。
例如,如果我有名为“1.1”的版本,它有平台 joomla 和版本“1.2”,有 wordpress 作为平台。
因此,当我在 wordpress 管理员中选择 default_version 下拉列表时,我希望它在下拉列表中仅显示我的版本“1.2”。现在它显示了所有版本。
我正在尝试限制limit_choices_to,如图here 所以我试试这个:
class Platform(models.Model):
name = models.CharField(max_length = 255)
default_version = models.ForeignKey(Version,limit_choices_to={'platform':XXXXX},related_name='platform_default_version')
但是我不知道要在 XXXX 中放置什么我尝试放置 self 但它没有用。
我也试过了
limit_choices_to={'platform.name':name}
我也没有工作。
在这个例子中,我希望能够选择一个最喜欢的孩子,但问题是管理员会给我所有的孩子供我选择,而不仅仅是我当前正在编辑的父母的孩子。
【问题讨论】:
-
limit_choices_to 不适用于动态值,请参阅stackoverflow.com/questions/1968596/… 我不确定这是否会对您的情况有所帮助,因为我猜这是在添加新平台而不是编辑?
-
关于您的第二个示例,您希望为您的孩子设置一个
favorite布尔字段,然后使用unique_together。 -
但是我可以选择 2 个最喜欢的孩子,让他们有犯错的空间。
标签: django orm foreign-keys admin