我的情况如下:
在我的models.py
中class Room(models.Model):
pop = models.ForeignKey('Pop', verbose_name="POP",
help_text="Pop this room belongs to", null=True,
blank=True)
.... other fields ....
class Pop(models.Model):
.... fields ....
在我的admin.py
中class RoomAdmin(admin.ModelAdmin):
search_fields = [..some fields...]
list_diplay = (pop, ....)
..... other configuration .....
由于Room与Pop具有外键关系,因此可以将多个房间与一个Pop关联。我必须实现类似的东西。
我有这些可能的解决方案,但我不知道如何在Django中实现这些想法,或者这些想法是否可行:
CSS魔术。我可以将CSS id与pop字段关联,以便只能为编辑屏幕启用它。我不确定如何实现这个
Django的admin.py,如果我可以从编辑屏幕中排除pop字段,那么它可能会有用。
修改模板,以便它们可以支持不可编辑的字段。
答案 0 :(得分:1)
选项2是最好的。您可以覆盖get_form
类中的RoomAdmin
方法,以便在有要编辑的对象时排除pop
字段:
def get_form(self, request, obj=None, **kwargs):
# if there's an object and it has been previously saved
if obj is not None and obj.id is not None:
# add 'pop' to the list of fields to exclude
exclude = list(kwargs.get('exclude', []))
exclude.append('pop')
kwargs['exclude'] = exclude
return super(RoomAdmin, self).get_form(request, obj, kwargs)