Форум сайта python.su
Всем привет,
У меня есть две М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'Базовая категория')
Офлайн
1.
ManyToManyField нужна только в одной модели. Из Category убирайте нафиг.
2.
Зачем виджет? Сделайте просто без виджета.
Офлайн
1. Убрал М2М из категорий
2. Без виджета… как? Делал через inlines, мне не нравится предоставляемый функционал
Офлайн
Разобраться так и не смог.
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)
Офлайн