모두 안녕하세요, 저는 장고와 jquery 모두 상당히 새로운데, 몇 년 동안 일반적인 oo 프로그래밍 경험 (주로 flash/flex/cf)이 있습니다. 몇 가지 모델 관계를 관리하고 사용성을 향상시키기 위해 간단한 jquery를 사용하는 스포츠 토너먼트에 대한 양식을 구현하는 최선의 방법을 찾아 내려고합니다.django 모델 관계, 양식 및 jquery 내 머리를 얻기
내 모델은 다음과 같이 :
from django.db import models
from django.contrib.auth.models import User
from TTHUltimate.countries.models import Country
# Create your models here.
class BaseItem(models.Model):
name = models.CharField(max_length=100)
description = models.TextField(blank=True, max_length=5000)
def __unicode__(self):
return self.name
class Location(models.Model):
country = models.ForeignKey(Country)
state_province = models.CharField(max_length = 100)
city = models.CharField(max_length = 100)
def __unicode__(self):
return '%s, %s, %s' % (self.city,self.state_province,self.country)
class Address(models.Model):
location = models.ForeignKey(Location)
address = models.CharField(max_length = 500)
postalCode = models.CharField(max_length = 20)
def __unicode__(self):
return '%s, %s %s' % (self.address, self.location.unicode(),self.postalCode)
class Tourney(BaseItem):
user = models.ForeignKey(User)
location = models.ForeignKey(Location, verbose_name='Location')
startDate = models.DateField('Start Date')
endDate = models.DateField('End Date',blank=True,null=True)
# webLinks = models.ManyToManyField(WebLinkItem, verbose_name='Web Links')
# emailContacts = models.ManyToManyField(EmailContactItem, verbose_name='Email Contacts')
# phoneContacts = models.ManyToManyField(PhoneContactItem, verbose_name='Phone Contacts')
# addressItems = models.ManyToManyField(AddressItem, verbose_name='Important Addresses')
# scheduleItems = models.ManyToManyField(ScheduleItem, verbose_name='Schedule')
class TourneyBaseItem(BaseItem):
tourney = models.ForeignKey(Tourney)
class WebLinkItem(TourneyBaseItem):
url = models.URLField()
class EmailContactItem(TourneyBaseItem):
email = models.EmailField()
class PhoneContactItem(TourneyBaseItem):
phone = models.CharField(max_length=50)
class AddressItem(TourneyBaseItem):
address = models.ForeignKey(Address)
class ScheduleItem(TourneyBaseItem):
datetime = models.DateTimeField()
내 주요 문제는 'TourneyBaseItem'를 확장 하단에있는 클래스의 마상 시합 외래 키 관계를 처리하는 방법입니다. 이 항목을 jquery 및 팝업을 통해 항목을 추가하거나 삭제할 수있는 테이블에 표시하고 싶습니다. 그러나 확실하지 않은 몇 가지 사항이 있습니다.
1. 모델 관계를 올바르게 설정 했습니까? 처음부터? 또한 주석 처리 된 행에서 볼 수 있듯이 항목 클래스에서 Tourney 외래 키 대신 ManyToMany 필드를 사용하는 아이디어를 고려했습니다. 또한 '위치'입력란을 사용하여 최선의 방법을 선택했는지 여부는 확실하지 않습니다.
2.) 장고에서이 양식을 구성하는 가장 좋은 방법은 무엇입니까? ModelForm을 가능한 한 많이 사용하여 내 필드를 정의하는 반복을 제거하기를 바랬습니다. ModelForms에서 기본 데이터와 항목 팝업을 볼 수 있지만 이전에 언급 한 외래 키 관계에서 어떻게 작동하는지 모르겠습니다. 그것들은보기에 함께 결합되어야 하는가?
3.) jquery를 사용하여 항목 목록을 관리하는 경우 어떻게 이러한 목록을 request.POST 개체에 포함시킬 수 있습니까? 나는 단순히 표의 데이터를 검토하여 제출시 숨겨진 선택 입력에 추가합니까?
읽어 주셔서 감사합니다.
-Dane
산문에서 실제로 모델링하려고하는 것을 조금 더 설명 할 수 있습니까? 모델에서 큰 그림을 보는 것이 어렵습니다. – SingleNegationElimination
예. 주요 수업은 Tourney입니다. Tourneys에는 이름, 설명, 사용자, 위치, 시작 날짜, 종료 날짜, 전자 메일 연락처 목록, 전화 연락처 목록, 중요한 링크 목록, 중요한 주소 목록 및 중요 목록이 있습니다. 날짜/시간 (일정). – Dane