Найти - Пользователи
Полная версия: ForeignKey и 2 модели
Начало » Django » ForeignKey и 2 модели
1 2
inoks
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()
empirik
inoks, спасибо. Но тут есть одно но: ведь у GenericForeignKey нет никакого виджета в админке, его никак не отобразить. Кто-нибудь знает, если ли решения готовые для этого дела?
inoks
Посмотрите на проект django-grappelli - там есть виджеты для этого.
empirik
Да, спасибо, уже поставил grappelli, все отлично работает.
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