2014-03-31 4 views
0

selectBox adminpaneli를 만드는 데 도움을주십시오. 내가 사용 : models.py :선택 상자를 만드는 방법은 무엇입니까?

from django.db import models 
from django.forms.models import ChoiceField 
from django import forms 

CHOICES = ('volvo', 'saab', 'opel', 'audi', 'cyan',) 


class Sponsors(models.Model): 
    title = models.CharField(max_length=30) 
    link = models.URLField(max_length=100) 
    background_color = forms.ChoiceField(widget=forms.Select, choices=CHOICES) 

admin.py :

from django.contrib import admin 
from sponsors.models import Sponsors 


class sponsorsAdmin(admin.ModelAdmin): 
    fields = ['title', 'link', 'background_color'] 
    list_display = ('title',) 
    search_fields = ['title'] 

    class Meta: 
     verbose_name = 'Спонсор' 
     verbose_name_plural = 'Спонсоры'   


admin.site.register(Sponsors, sponsorsAdmin) 

을 결과, 관리 패널에만 표시 필드 "ID", "제목", "링크"입니다. "background_color"필드는 표시되지 않습니다. 또한 DB에 존재하지 않습니다.

내가 this 같은 것을 보았다 adminpanel에서 "BACKGROUND_COLOR을"필드해야합니다

답변

0

을 오히려 모델에 background_color 필드를 추가하는 대신, 해당 필드를 포함하는 ModelForm 하위 클래스해야한다.

class Sponsors(models.Model): 
    title = models.CharField(max_length=30) 
    link = models.URLField(max_length=100) 


CHOICES = ('volvo', 'saab', 'opel', 'audi', 'cyan',) 


class SponsorsForm(models.ModelForm): 

    class Meta: 
     model = Sponsors 

    background_color = forms.ChoiceField(choices=CHOICES) 


class sponsorsAdmin(admin.ModelAdmin): 
    ... 
    form = SponsorsForm 
관련 문제