Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 14, 2013 12:27:48

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

ForeignKey и 2 модели

empirik
Здесь получается, что нужно каждый раз создавать объект этого типа TaggedItem. Получается, мне нужно где-то в коде следить за тем, не создался ли у меня объект одного из типов User или StoreCell и тогда добавлять объект типа TaggedItem. Со StoreCell все просто, это мой объект, можно, к примеру

Не внимательно читали описание.
Не нужно создавать объект этого типа, нужно указать дополнительные поля в вашем объекте где будет храниться id значения и тип этого значения, которое будет автоматически предствляться в виде нужного вам поля.

как то так:

from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType
class StoreCell(models.Model):
    name          = models.CharField(max_length=50)
class StoreCell2(models.Model):
    name          = models.CharField(max_length=50)
class Circuit(models.Model):
    name          = models.CharField(max_length=50)
    place_type    = models.ForeignKey(ContentType)
    palce_id      = models.PositiveIntegerField('place_id')
    place         = generic.GenericForeignKey('place_type', 'palce_id')
    def __unicode__(self):
        return u'%s' % self.name

т.е. поле place может быть объектом как класса StoreCell, так и StoreCell2

place1  = StoreCell.objects.get_or_create(name='Store cell 1')[0]
c1 = Circuit(place=place1, name = 'Circuit1')
c1.save()
place2  = StoreCell2.objects.get_or_create(name='Store cell 2')[0]
c2 = Circuit(place=place2, name = 'Circuit2')
c2.save()

Отредактировано inoks (Фев. 14, 2013 12:32:01)

Офлайн

#2 Фев. 20, 2013 19:32:55

empirik
Зарегистрирован: 2012-03-26
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

ForeignKey и 2 модели

inoks, спасибо. Но тут есть одно но: ведь у GenericForeignKey нет никакого виджета в админке, его никак не отобразить. Кто-нибудь знает, если ли решения готовые для этого дела?

Офлайн

#3 Фев. 22, 2013 09:29:30

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

ForeignKey и 2 модели

Посмотрите на проект django-grappelli - там есть виджеты для этого.

Офлайн

#4 Фев. 22, 2013 11:10:50

empirik
Зарегистрирован: 2012-03-26
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

ForeignKey и 2 модели

Да, спасибо, уже поставил grappelli, все отлично работает.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version