Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 29, 2013 17:16:59

newbie17
Зарегистрирован: 2013-09-29
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по Django от новичка

Здравствуйте! Это мой первый опыт web-программирования.
Ниже представлен мой код. Суть моего приложения такова:
есть таблица заказа на суп и на пиццу, также есть сводная таблица Zakaz.
комментариями оформлено то, что я не знаю как реализовать.
как передавать в сводную таблицу № заказа супа/пиццы (id_n)?
как автоматически присвоить полю заказчик имя залогинненого пользователя, подающего заказ?

также интересует как делать перенос строки в verbose_name, что-то типа verbose_name='общий № /n заказа'? при наличии большого количества столбцов, таблица становится слишком широкой.
какие права давать пользователю в админке, чтобы он мог подавать заказы на суп/пиццу, просматривать таблицы заказов сводный/пицца/суп. а в сводную таблицу запретить подавать заказ и запретить редактировать уже поданные заказы.

from django.db import models
from django.contrib import admin
class Zakaz(models.Model):
    id = models.AutoField(primary_key=True, verbose_name='общий № заказа')
    # id_n = № заказа для определенного типа
    date_of_request = models.DateTimeField(auto_now_add=True, verbose_name='дата подачи заказа')
    # zakazchik = тот кто подал заказ
    # req_code = пицца или суп. заполняется автоматически
    comment = models.TextField(verbose_name='Примечание', blank=True,
                               help_text='Укажите особые параметры или оставьте пустым')
    
class ZakazAdmin(admin.ModelAdmin):
    list_display = ('id', 'id_n', 'req_code', 'date_of_request', 'comment', 'zakazchik')
    
admin.site.register(Zakaz, ZakazAdmin)
class Pizza(Zakaz):
    id_n = models.AutoField("№ по типу", primary_key=True)
    # zakazchik = тот кто подал заказ
    # req_code = pizza
    
class PizzaAdmin(admin.ModelAdmin):
    list_display = ('id', 'id_n', 'req_code', 'date_of_request', 'comment', 'zakazchik')
    
admin.site.register(Pizza, PizzaAdmin)
class Soup(models.Model):
    id_n = models.AutoField("№ по типу", primary_key=True)
    # zakazchik = тот кто подал заказ
    # req_code = soup
    
class SoupAdmin(admin.ModelAdmin):
    list_display = ('id', 'id_n', 'req_code', 'date_of_request', 'comment', 'zakazchik')
    
admin.site.register(Soup, SoupAdmin)

в админке по адресу “Начало › Auth › Users” есть поисковый фильтр. как подобную конструкцию реализовать в моем приложении в сводной таблице заказов?

Спасибо всем уделившим внимание.

Отредактировано newbie17 (Сен. 29, 2013 17:26:46)

Офлайн

#2 Сен. 29, 2013 18:37:47

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вопросы по Django от новичка

#model
class Order(models.Model):
    date_of_request = models.DateTimeField(auto_now_add=True, verbose_name='дата подачи заказа')
    customer = models.ForeignKey(User)
#form
.....
# view
......
if form.is_valid():
  order = form.save(commit=False)
  order.customer = request.user
  order.save()



Офлайн

#3 Окт. 2, 2013 19:42:30

newbie17
Зарегистрирован: 2013-09-29
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по Django от новичка

FishHook
спасибо за помощь. правда я пока не совсем понимаю куда вставлять код:

if form.is_valid():
  order = form.save(commit=False)
  order.customer = request.user
  order.save()

в файл views.py, лежащий в папке моего приложения?
———–

посмотрел вот эту статью. конкретно пункт “Более глубокие изменения: добавляем права строкового уровня”.
по аналогии с этим пунктом добавил в свой класс added_by. теперь при добавлении заказа можно выбрать заказчика, но это происходит в “ручном” режиме из выпадающего списка. подскажите как автоматизировать процесс, чтобы залогиненный заказчик добавлялся в added_by.

и как передавать из дочерних классов в родительский значения полей?
чтобы при создании заказа на пиццу автоматически в req_code записывалось ПИЦЦА, а при добавлении супа соответственно СУП?

Офлайн

#4 Окт. 2, 2013 22:40:44

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вопросы по Django от новичка

Вы совершенно не с того начали.
Перво-наперво необходимо свободно владеть питоном. Если возникают вопросы типа “и как передавать из дочерних классов в родительский значения полей”, то это означает лишь то, что языка Вы не знаете. А без знания языка все движения по овладеванию джангой - суть бессмысленная возня. Каким бы чудесным не был фреймворк, он не избавит Вас от необходимости программировать. Вы видимо надеетесь обойтись декларативными объявлениями и стандартными фишками админки? Ничего не выйдет, по крайней мере, если нужно поведение в рамках стандартных процедур, возьмите CMS по вкусу и не парьтесь.
Во-вторых, пройдите какой-нибудь туториал до конца и почитайте уже учебник по джанге.



Офлайн

#5 Окт. 2, 2013 22:45:34

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вопросы по Django от новичка

И да.
Зачем разные таблицы для супа и пиццы? А если триста видов товаров будете продавать, триста таблиц? А для добавления нового вида будем код дописывать? Вы 1С-ку видели, там так делают, да? Приходит конфигураст и давай добавлять товары на склад!



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version