양식 세트를 사용하여 다른 양식을 표시하는 페이지가 있습니다. django의 formset에있는 양식에서 라디오 버튼 사용
이들은
내 모델입니다 :class Phone(models.Model):
mac = models.CharField()
class PhoneLine(models.Model):
phone = models.ForeignKey(Phone)
voicemail = models.BooleanField("Voice Mail", default=False)
전화는 많은 선 (전화선)을 가질 수 있지만 단 하나의 전화 회선은 음성 메일을 사용할 수 있습니다. I는 해당 formset를 사용 phonelines 표시 기본적
다음과 같이 체크 박스로의 음성 메일 필드 디스플레이. (I 요구 사항에 기초하여, 해당 formset에 프리픽스를 추가)
form1 of the formset
<input type="checkbox" name="phone_client_line_1-0-voicemail" id="id_phone_client_line_1-0-voicemail">
form2 of the formset
<input type="checkbox" name="phone_client_line_1-1-voicemail" id="id_phone_client_line_1-1-voicemail">
합니다 (검사 및 UN 체크 박스의 -checking이 스레드, Django - Show BooleanField in a formset as one group of radio buttons을 기반으로 백엔드)
를 업데이트, 지금은 라디오 버튼과 음성 메일 필드를 표시하기 위해 내 전화선 양식의 초기화 및 add_prefix 방법 ..
수정form1 of the formset
<input type="radio" id="id_voicemail_1_0" value="phone_client_line_1-0-voicemail" name="voicemail_1">
form2 of the formset
<input type="radio" id="id_voicemail_1_0" value="phone_client_line_1-1-voicemail" name="voicemail_1">
보시다시피, 지금은 라디오 필드 voicemail_1을 위해, 내가 선택한 전화선의 값이 :
class PhoneLineForm(ModelForm):
def __init__ (self, *args, **kwargs):
super(PhoneLineForm, self).__init__(*args, **kwargs)
self.fields['voicemail'] = BooleanField(widget = RadioSelect(choices=((self.prefix+"-"+str("voicemail"), 'Voicemail LIne'),)))
def add_prefix(self, field):
if field == 'voicemail': return ('%s_%s') %(field, self.instance.phone.id)
else: return self.prefix and ('%s-%s' % (self.prefix, field)) or field
이 다음과 HTML 출력을 수정합니다. 이 양식을 제출하면 voicemail_1 라디오를 선택하면 데이터베이스가 업데이트되지 않습니다.
제출시 선택한 전화선의 값을 어떻게 캡처 할 수 있습니까? phonelineform의 save 메소드를 덮어 쓰면 contatin이 무엇이겠습니까?
이 부분에 대한 모든 의견을 환영합니다. 감사!!