Форум сайта python.su
0
Всем привет,
У меня есть две М2М модели связанные через таблицу хранящую дополнительную информацию (логическое поле).
class LeisurePlace(models.Model): code = models.CharField( u'Код', max_length = 250 ) name = models.CharField( max_length = 250, verbose_name = u'Название' ) title = models.CharField( max_length = 250, verbose_name = u'Заголовок' ) desc = models.TextField( verbose_name = u'Описание', blank = True ) address = models.TextField( verbose_name = u'Адресс', blank = True ) email = models.CharField( max_length = 250, verbose_name = u'Эл. почта', blank = True ) site = models.CharField( max_length = 250, verbose_name = u'Сайт', blank = True ) map_latitude = models.DecimalField(max_digits = 17, decimal_places = 14, verbose_name = u'Широта', blank = True ) map_longitude = models.DecimalField(max_digits = 17, decimal_places = 14, verbose_name = u'Долгота', blank = True ) categories = models.ManyToManyField('Category', through = 'PlaceCategory', verbose_name = u'Категории' ) publication_date = models.DateTimeField(u'Дата публикации') def __unicode__(self): return self.title class Category(models.Model): code = models.CharField( u'Код', max_length = 250 ) title = models.CharField( u'Заголовок', max_length = 250 ) leisure_places = models.ManyToManyField('LeisurePlace', through = 'PlaceCategory') def __unicode__(self): return self.title class PlaceCategory(models.Model): leisure_place = models.ForeignKey('LeisurePlace') category = models.ForeignKey('Category') is_basic = models.BooleanField(u'Базовая категория')
, но изменять более простые виджеты (инпуты, текстареи и т.п.) у меня уже получается.
Офлайн
568
1.
ManyToManyField нужна только в одной модели. Из Category убирайте нафиг.
2.
Зачем виджет? Сделайте просто без виджета.
Офлайн
0
1. Убрал М2М из категорий
2. Без виджета… как? Делал через inlines, мне не нравится предоставляемый функционал
Офлайн
0
Разобраться так и не смог.
admin.py:
from django.db import models from django.contrib import admin from project.models import * from forms import LeisurePlaceAdminForm class PlaceCategoryInline(admin.StackedInline): model = PlaceCategory extra = 1 class CharacteristicValueInline(admin.TabularInline): model = CharacteristicValue extra = 1 class LeisurePlaceAdmin(admin.ModelAdmin): # regular stuff class Media: js = ( '//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', # jquery ) form = LeisurePlaceAdminForm inlines = (PlaceCategoryInline, CharacteristicValueInline) fieldsets = [ (None, {'fields': ['code', 'name', 'title']}), ('Контактные данные', {'fields': ['email', 'site', 'address']}), ('Описание', {'fields': ['desc'], 'classes': ['collapse']}), ('Координаты', {'fields': ['map_latitude', 'map_longitude']}), #('Категории', {'fields': ['categories']}), ] admin.site.register(LeisurePlace, LeisurePlaceAdmin)
Отредактировано KsimMiloff (Ноя. 25, 2013 12:40:51)
Офлайн