大家好,我對django和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字段,而不是項類中的Tourney外鍵,正如您從註釋掉的行中可以看到的那樣。對於這個問題,我也不確定我是否採用了'位置'字段的最佳方法。
2.)在Django中構造這個表單的最好方法是什麼?我希望儘可能多地使用ModelForm來消除重複定義自己的字段。我可以看到在ModelForms中傳遞基本數據和項目彈出窗口,但我不確定它如何與前面提到的外鍵關係一起工作。如果這些在視圖中拼湊在一起?
3.)如果我使用jquery來管理我的項目列表,那麼如何將這些列表包含在request.POST對象中?我只是簡單地瀏覽表格中的數據,並將它們添加到提交的隱藏的選擇輸入中?
感謝您的閱讀。
-Dane
你能以散文形式描述一下你實際想要建模的東西嗎?我很難從模型中看到大局。 – SingleNegationElimination 2009-12-26 06:20:40
當然。主要的類是Tourney。 Tourneys有一個名稱,描述,用戶,位置,開始日期,結束日期,電子郵件聯繫人列表,電話聯繫人列表,重要鏈接列表,重要地址列表以及重要列表日期/時間(日程安排)。 – Dane 2009-12-26 21:01:51