Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 20, 2009 22:40:28

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

прошу проверить описание классов

всем привет,
я хочу описать модель книги и заказа книг в магазине. Класс 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
вот голову ломаю можно ли описать модель вместо трех классов - двумя классами.



Офлайн

#2 Ноя. 21, 2009 00:01:39

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

прошу проверить описание классов

qman
вот голову ломаю можно ли описать модель вместо трех классов - двумя классами.
Очевидно, что тут нажна M2M связь через промежуточную модель с дополнительным полем - тогда будет 3 модели (практически 2 значимые), а сейчас у вас их четыре (таблицы).



Офлайн

#3 Ноя. 21, 2009 07:37:43

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

прошу проверить описание классов

Daevaorn
qman написал:
вот голову ломаю можно ли описать модель вместо трех классов - двумя классами.
Очевидно, что тут нажна M2M связь через промежуточную модель с дополнительным полем - тогда будет 3 модели (практически 2 значимые), а сейчас у вас их четыре (таблицы).
извините за тупость - почему 4 таблицы? я в примере привел Book, CountOfBook, Order - итого 3 таблицы! Если не затруднит скажите что такое M2M связи? Это тип many2many - многие ко многим? Тогда в классе Order я и использую связь многие ко многим. Вы можете привести описание models.py как вы видите свое решение?



Отредактировано (Ноя. 21, 2009 09:25:46)

Офлайн

#4 Ноя. 21, 2009 09:52:47

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

прошу проверить описание классов

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)



Офлайн

#5 Ноя. 21, 2009 10:21:07

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

прошу проверить описание классов

lorien
Ага, только названия я бы дал OrderItem и Order. Но это на вкус и цвет уже smile
В OrderItem вы бы разместили детали заказа (вместо моего OrderDescription )?
P.S. имхо лучше придерживаться общепринятых , наиболее употребляемых слов/терминов для описания классов, тогда мне как новичку будет проще понимать чужой код….



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version