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