Привет всем, я довольно новичок как в django, так и в jquery, но у меня есть несколько лет общего опыта программирования oo (в основном flash / flex / cf), и я пытаюсь найти лучший способ реализации форма для спортивного турнира, которая управляет несколькими модельными отношениями и использует простой 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()
Моя главная проблема заключается в том, как обращаться с отношениями внешних ключей Tourney для классов в нижней части, которые расширяют 'TourneyBaseItem'. Я хотел бы, чтобы они были представлены в таблицах, в которые можно добавлять и удалять элементы с помощью jquery и всплывающих окон, но есть некоторые вещи, в которых я не уверен:
1.) Правильно ли я настроил отношения модели для начала? Я также рассмотрел идею использования полей ManyToMany в классе Tourney вместо внешнего ключа Tourney в классах предметов, как вы можете видеть из закомментированных строк. В этом отношении я также не уверен, что выбрал лучший подход с полем 'location'.
2.) Как лучше всего построить эту форму в Django? Я надеялся максимально использовать ModelForm, чтобы убрать повторение определения моих собственных полей. Я вижу передачу ModelForms для основных данных и всплывающих окон элементов, но я не уверен, как это будет работать с ранее упомянутыми отношениями внешнего ключа. Должны ли они быть соединены в виде?
3.) Если я использую jquery для управления списками своих товаров, как мне тогда включить эти списки в объект request.POST? Должен ли я просто просмотреть данные в таблицах и добавить их к скрытым выбранным данным при отправке?
Спасибо за чтение.
-Dane