Найти - Пользователи
Полная версия: Вопросы по Django от новичка
Начало » Django » Вопросы по Django от новичка
1
newbie17
Здравствуйте! Это мой первый опыт 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” есть поисковый фильтр. как подобную конструкцию реализовать в моем приложении в сводной таблице заказов?

Спасибо всем уделившим внимание.
FishHook
#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()
newbie17
FishHook
спасибо за помощь. правда я пока не совсем понимаю куда вставлять код:
if form.is_valid():
  order = form.save(commit=False)
  order.customer = request.user
  order.save()

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

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

и как передавать из дочерних классов в родительский значения полей?
чтобы при создании заказа на пиццу автоматически в req_code записывалось ПИЦЦА, а при добавлении супа соответственно СУП?
FishHook
Вы совершенно не с того начали.
Перво-наперво необходимо свободно владеть питоном. Если возникают вопросы типа “и как передавать из дочерних классов в родительский значения полей”, то это означает лишь то, что языка Вы не знаете. А без знания языка все движения по овладеванию джангой - суть бессмысленная возня. Каким бы чудесным не был фреймворк, он не избавит Вас от необходимости программировать. Вы видимо надеетесь обойтись декларативными объявлениями и стандартными фишками админки? Ничего не выйдет, по крайней мере, если нужно поведение в рамках стандартных процедур, возьмите CMS по вкусу и не парьтесь.
Во-вторых, пройдите какой-нибудь туториал до конца и почитайте уже учебник по джанге.
FishHook
И да.
Зачем разные таблицы для супа и пиццы? А если триста видов товаров будете продавать, триста таблиц? А для добавления нового вида будем код дописывать? Вы 1С-ку видели, там так делают, да? Приходит конфигураст и давай добавлять товары на склад!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB