我有一种情况,我希望利用 Django 的自动完成管理小部件,它尊重引用模型字段限制。
例如,我有以下Collection模型,该模型kind具有指定选项的属性。
class Collection(models.Model):
...
COLLECTION_KINDS = (
('personal', 'Personal'),
('collaborative', 'Collaborative'),
)
name = models.CharField()
kind = models.CharField(choices=COLLECTION_KINDS)
...
Run Code Online (Sandbox Code Playgroud)
另一个模型ScheduledCollection引用Collection了一个ForeignKey实现limit_choices_to选项的字段。此模型的目的是将元数据与Collection特定用例的a 相关联。
class ScheduledCollection(models.Model):
...
collection = models.ForeignKey(Collection, limit_choices_to={'kind': 'collaborative'})
start_date = models.DateField()
end_date = models.DateField()
...
Run Code Online (Sandbox Code Playgroud)
两种模型都注册了ModelAdmin. 该Collection模型实现search_fields.
@register(models.Collection)
class CollectionAdmin(ModelAdmin):
...
search_fields = ['name']
...
Run Code Online (Sandbox Code Playgroud)
该ScheduledCollection模型实现autocomplete_fields
@register(models.ScheduledCollection)
class ScheduledCollectionAdmin(ModelAdmin):
...
autocomplete_fields = ['collection'] …Run Code Online (Sandbox Code Playgroud)