Форум сайта python.su
В таблицу (корзины) добавляются данные с request.session и с формы (phone, email, town…)
Вот модель корзины:
class Basket(models.Model): product = models.ForeignKey(Product, verbose_name="Товар") username = models.CharField(max_length=50, verbose_name="Имя") phone = models.CharField(max_length=50, verbose_name="Телефон") email = models.EmailField(blank=True) town = models.CharField(max_length=50, verbose_name="Город") street = models.CharField(max_length=50, verbose_name="Улица") house = models.CharField(max_length=50, verbose_name="Дом") room = models.CharField(max_length=50, blank=True, verbose_name="Квартира") quantity = models.IntegerField(max_length=50, verbose_name="Количество")
Отредактировано Saturn (Авг. 29, 2012 12:27:37)
Офлайн
Обычно делают так:
class Product(models.Model): ... class Basket(models.Model): ... class BasketItem(models.Model): product = models.ForeignKey(Product, verbose_name="Товар") basket = models.ForeignKey(Basket)
Отредактировано adw0rd (Авг. 29, 2012 12:49:47)
Офлайн
Saturn
Проблема в том, что в модели Product содержатся поля (category, price, …)
Как можно эти поля (category, price) отобразить в модели Basket.
@property def product_categories(self): return self.product.categories.all() # для price тоже самое
Офлайн
То есть в результате должно добавляться id (модели Product) в корзину, а в админке отображаться все поля надлежащие этому id.Для оборажения вложенных структур в админке смотрите https://docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodeladmin-objects
Отредактировано adw0rd (Авг. 29, 2012 12:55:30)
Офлайн
SaturnЭто бессмысленно, если вы связываете модели отношением, то они и так имеют доступ к полям друг друга.
Как можно эти поля (category, price) отобразить в модели Basket.
SaturnВы можете менять формы админки так же, как и любые другие. Наследуйте и добавляйте поля.
То есть в результате должно добавляться id (модели Product) в корзину, а в админке отображаться все поля надлежащие этому id.
Отредактировано fata1ex (Авг. 29, 2012 13:48:26)
Офлайн
может просто у Product определить __unicode__() ?
Офлайн
fata1exКак по мне, так это были разные законченные посты. Вообще я против любого редактирования диалога, лучше сделать склейку постов, а не просить редактировать их.
adw0rd, как насчет кнопки “Редактировать”?
Офлайн
Спасибо, что помогаете, но я если честно так и понял как можно отобразить в этой форме администратора
class Order(models.Model): product = models.ForeignKey(Product, verbose_name="Товар") username = models.CharField(max_length=50, verbose_name="Имя") phone = models.CharField(max_length=50, verbose_name="Телефон") email = models.EmailField(blank=True) town = models.CharField(max_length=50, verbose_name="Город") street = models.CharField(max_length=50, verbose_name="Улица") house = models.CharField(max_length=50, verbose_name="Дом") room = models.CharField(max_length=50, blank=True, verbose_name="Квартира") quantity = models.IntegerField(max_length=50, verbose_name="Количество") def __unicode__(self): return self.product
Офлайн
class Product(models.Model): name=.... articul=... def __unicode__(self): return "Название:%s, артикул: %s" %(self.name, self.articul)
Офлайн
Saturn
как можно отобразить в этой форме администратора
…
чтобы были поля с Product ?
from django.contrib import admin from app_name.models import Product, Order class ProductInlineAdmin(admin.TabularInline): model = Product class OrderAdmin(admin.ModelAdmin): inlines = [ProductInlineAdmin, ] ... admin.site.register(Order, OrderAdmin)
Отредактировано adw0rd (Авг. 29, 2012 15:59:25)
Офлайн