试图对booleanfields进行分组的字段集有问题

时间:2013-09-03 04:50:13

标签: python django admin

我正在尝试自定义管理面板,将一些复选框分组,但我遇到了字段集问题。如果有人可以帮助我。 提前谢谢。

admin.py

from django.contrib import admin
from django.forms.models import fields_for_model
from dashboard.models import socio, pagamento, treino


class TreinoAdmin(admin.ModelAdmin):
    # fieldsets = (
    #   (None, {'fields': ['socio']}),
    #   ('Armamento', {'fields': ['arma', 'municao']}),
    #   ('Alvos', {
    #       'fields': (
    #           'Galinhas', ['galinha1','galinha2','galinha3','galinha4','galinha5','galinha6','galinha7','galinha8','galinha9','galinha10',],
    #           'Porcos', ['porco1','porco2','porco3','porco4','porco5','porco6','porco7','porco8','porco9','porco10',],
    #           'Perus', ['peru1','peru2','peru3','peru4','peru5','peru6','peru7','peru8','peru9','peru10',],
    #           'Carneiros', ['carneiro1','carneiro2','carneiro3','carneiro4','carneiro5','carneiro6','carneiro7','carneiro8','carneiro9','carneiro10',]
    #           ),
    #       }),
    # )
    #readonly_fields = ("Galinhas", "Porcos","Perus","Carneiros",)
    def __init__(self, *args, **kwargs):
        super(TreinoAdmin, self).__init__(*args, **kwargs)
        todos = set(fields_for_model(models.treino))
        galinhas = ['galinha1','galinha2','galinha3','galinha4','galinha5','galinha6','galinha7','galinha8','galinha9','galinha10',]
        porcos = ['porco1','porco2','porco3','porco4','porco5','porco6','porco7','porco8','porco9','porco10',]
        perus = ['peru1','peru2','peru3','peru4','peru5','peru6','peru7','peru8','peru9','peru10',]
        carneiros = ['carneiro1','carneiro2','carneiro3','carneiro4','carneiro5','carneiro6','carneiro7','carneiro8','carneiro9','carneiro10',]

        alvos = set(galinhas) | set(porcos) | set(perus) | set(carneiros)

        resto = list(todos - alvos)

        self.fieldsets = (
            (None, {
                'fields': todos
            }),
            ('Galinhas', {
                'classes', ['collapse',],
                'fields': galinhas
            }),
            ('Porcos', {
                'classes', ['collapse',],
                'fields': porcos
            }),
            ('Perus', {
                'classes', ['collapse',],
                'fields': perus
            }),
            ('Carneiros', {
                'classes', ['collapse',],
                'fields': carneiros
            }),
        )
        models = models.treino

admin.site.register(socio)
admin.site.register(pagamento)
admin.site.register(models.treino, TreinoAdmin)

models.py

class treino(models.Model):
    # /// treinos do sócio
    socio = models.ForeignKey(socio)
    arma = models.CharField(max_length=30)
    municao = models.CharField(max_length=40)

    # // alvos
    galinha1 = models.BooleanField('Galinha #1')
    galinha2 = models.BooleanField('Galinha #2')
    galinha3 = models.BooleanField('Galinha #3')
    galinha4 = models.BooleanField('Galinha #4')
    galinha5 = models.BooleanField('Galinha #5')

    galinha6 = models.BooleanField('Galinha #6')
    galinha7 = models.BooleanField('Galinha #7')
    galinha8 = models.BooleanField('Galinha #8')
    galinha9 = models.BooleanField('Galinha #9')
    galinha10 = models.BooleanField('Galinha #10')


    porco1 = models.BooleanField('Porco #1')
    porco2 = models.BooleanField('Porco #2')
    porco3 = models.BooleanField('Porco #3')
    porco4 = models.BooleanField('Porco #4')
    porco5 = models.BooleanField('Porco #5')

    porco6 = models.BooleanField('Porco #6')
    porco7 = models.BooleanField('Porco #7')
    porco8 = models.BooleanField('Porco #8')
    porco9 = models.BooleanField('Porco #9')
    porco10 = models.BooleanField('Porco #10')


    peru1 = models.BooleanField('Peru #1')
    peru2 = models.BooleanField('Peru #2')
    peru3 = models.BooleanField('Peru #3')
    peru4 = models.BooleanField('Peru #4')
    peru5 = models.BooleanField('Peru #5')

    peru6 = models.BooleanField('Peru #6')
    peru7 = models.BooleanField('Peru #7')
    peru8 = models.BooleanField('Peru #8')
    peru9 = models.BooleanField('Peru #9')
    peru10 = models.BooleanField('Peru #10')


    carneiro1 = models.BooleanField('Carneiro #1')
    carneiro2 = models.BooleanField('Carneiro #2')
    carneiro3 = models.BooleanField('Carneiro #3')
    carneiro4 = models.BooleanField('Carneiro #4')
    carneiro5 = models.BooleanField('Carneiro #5')

    carneiro6 = models.BooleanField('Carneiro #6')
    carneiro7 = models.BooleanField('Carneiro #7')
    carneiro8 = models.BooleanField('Carneiro #8')
    carneiro9 = models.BooleanField('Carneiro #9')
    carneiro10 = models.BooleanField('Carneiro #10')

你们可以看到(我希望),我试图让这些booleanfields显示在4组中,可以折叠。 请帮助我,我已经尝试了所有:)

出现此错误:

SyntaxError at /admin/
invalid syntax (admin.py, line 38)
Request Method: GET
Request URL:    http://127.0.0.1:8000/admin/
Django Version: 1.5.2
Exception Type: SyntaxError
Exception Value:    
invalid syntax (admin.py, line 38)
Exception Location: /usr/local/lib/python2.7/dist-packages/django/utils/importlib.py in import_module, line 35
Python Executable:  /usr/bin/python
Python Version: 2.7.3
Python Path:    
['/home/lucas/Documentos/python/cicuta',
 '/usr/local/lib/python2.7/dist-packages/South-0.8.2-py2.7.egg',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-linux2',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PIL',
 '/usr/lib/python2.7/dist-packages/gst-0.10',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/usr/lib/pymodules/python2.7',
 '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
Server time:    Ter, 3 Set 2013 01:51:07 -0300

1 个答案:

答案 0 :(得分:0)

你有一个SyntaxError ..一个拼写错误我猜词典应该是{key: value}。在'classes'删除','即

之后添加冒号
('Galinhas', {
                'classes': ['collapse',],
                'fields': galinhas
            }),
            ('Porcos', {
                'classes': ['collapse',],
                'fields': porcos
            }),
            ('Perus', {
                'classes': ['collapse',],

此外,由于您已导入treino但正在使用models.treino,因此您也可能获得NameError