有没有办法在Django Admin中动态更改SelectFields中为ForeignKeys显示的值?无需编写一些可以执行此操作的自定义JS。
说,我有两个模型:主题和 AreaOfDiscussion 。 主题有一个讨论区域,如
class Topic(models.Model):
area = models.ForeignKey(AreaOfDiscussion, null=False)
现在我添加了讲座模型,该模型必须同时包含主题和区域。
class Lecture(models.Model):
area = models.ForeignKey(AreaOfDiscussion, null=False)
topic = models.ForeignKey(Topic, null=False)
我希望用户(管理面板)能够先选择一个区域,然后根据选择,为他/她提供所选区域的可用主题列表。这可以实现吗?
答案 0 :(得分:0)
首先设置topic = models.Fk(...,null = True)
class AdminLecture(admin.ModelAdmin):
object = None
def get_object(self, request, object_id):
self.object = super(AdminLecture, self).get_object(request, object_id)
return self.object
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if self.object and db_field.name == 'topic':
kwargs['queryset'] = Topic.objects.filter(area=self.object.area)
return super(AdminLecture, self).formfield_for_foreignkey(db_field, request, **kwargs)
然后按保存和cotinue编辑
答案 1 :(得分:0)
您可以使用django-smart-selects
软件包:
https://github.com/digi604/django-smart-selects