Форум сайта python.su
всем привет,
я хочу описать модель книги и заказа книг в магазине. Класс CountOfBook служит чтобы хранить информацию какое кол-во одинаковых книг требуестя заказать. Прощу проверить описание классов
class Book(models.Model):
title = models.CharField(max_length=100, verbose_name='Название')
authors = models.ManyToManyField(Author, verbose_name='Автор')
publisher = models.ForeignKey(Publisher, verbose_name='Издательство')
publication_date = models.DateField(blank=True, null=True,\
verbose_name='Дата издания')
class Admin:
pass
def __unicode__(self):
return self.title
class CountOfBook(models.Model):
book = models.ForeignKey(Book, verbose_name='Книга')
count = models.PositiveIntegerField(verbose_name='Кол-во')
class Admin:
pass
def __unicode__(self):
return u'%s %s' % (self.book, self.count)
class Order (models.Model):
title = models.CharField(max_length=100, verbose_name='Заявка')
set_of_book = models.ManyToManyField(CountOfBook, verbose_name='Набор книг')
#end_time = models.DateField(blank=True, null=True, verbose_name='Дата издания')
class Admin:
pass
def __unicode__(self):
return self.title
Офлайн
qmanОчевидно, что тут нажна M2M связь через промежуточную модель с дополнительным полем - тогда будет 3 модели (практически 2 значимые), а сейчас у вас их четыре (таблицы).
вот голову ломаю можно ли описать модель вместо трех классов - двумя классами.
Офлайн
Daevaornизвините за тупость - почему 4 таблицы? я в примере привел Book, CountOfBook, Order - итого 3 таблицы! Если не затруднит скажите что такое M2M связи? Это тип many2many - многие ко многим? Тогда в классе Order я и использую связь многие ко многим. Вы можете привести описание models.py как вы видите свое решение?
qman написал:
вот голову ломаю можно ли описать модель вместо трех классов - двумя классами.
Очевидно, что тут нажна M2M связь через промежуточную модель с дополнительным полем - тогда будет 3 модели (практически 2 значимые), а сейчас у вас их четыре (таблицы).
Отредактировано (Ноя. 21, 2009 09:25:46)
Офлайн
lorienПосмотрите пожалуйста, вашу идею я правильно реализовал:
Я б так сделал:
Order <– Item
Book <– Item
Item = {order, book, count}
class Book(models.Model):
title = models.CharField(max_length=100, verbose_name='Название')
authors = models.ManyToManyField(Author, verbose_name='Автор')
publisher = models.ForeignKey(Publisher, verbose_name='Издательство')
publication_date = models.DateField(blank=True, null=True,\
verbose_name='Дата издания')
class Admin:
pass
def __unicode__(self):
return self.title
class OrderDescription (models.Model):
title = models.CharField(max_length=100, verbose_name='Заявка')
date_order = models.DateField(blank=True, null=True, verbose_name='Дата заказа')
class Admin:
pass
def __unicode__(self):
return self.title
class Order(models.Model):
book = models.ForeignKey(Book, verbose_name='Книга')
count = models.PositiveIntegerField(verbose_name='Кол-во')
description = models.ForeignKey(OrderDescription, verbose_name='Название заказа')
class Admin:
pass
def __unicode__(self):
return u'%s %s' % (self.book, self.count)
Офлайн
lorienВ OrderItem вы бы разместили детали заказа (вместо моего OrderDescription )?
Ага, только названия я бы дал OrderItem и Order. Но это на вкус и цвет уже smile
Офлайн