админ шаблон для многихтоманов - PullRequest
1 голос
/ 20 февраля 2009

У меня много взаимосвязей между публикацией и патологией. Каждая публикация может иметь много патологий. Когда публикация появляется в шаблоне администратора, мне нужно увидеть множество патологий, связанных с этой публикацией. Вот модельное утверждение:

class Pathology(models.Model):
    pathology = models.CharField(max_length=100)
    def __unicode__(self):
        return self.pathology
    class Meta:
        ordering = ["pathology"]

class Publication(models.Model):
    pubtitle = models.TextField()
    pathology = models.ManyToManyField(Pathology)
    def __unicode__(self):
        return self.pubtitle
    class Meta:
        ordering = ["pubtitle"]

Вот admin.py. Я пробовал варианты следующего, но всегда получить сообщение о том, что у публикации или патологии нет внешнего ключа ассоциированы.

from myprograms.cpssite.models import Pathology
class PathologyAdmin(admin.ModelAdmin):
    # ...
    list_display = ('pathology', 'id')

admin.site.register(Pathology, PathologyAdmin)

class PathologyInline(admin.TabularInline):
    #...
    model = Pathology
    extra = 3

class PublicationAdmin(admin.ModelAdmin):
    # ...
    ordering = ('pubtitle', 'year')
    inlines = [PathologyInline]
admin.site.register(Publication,PublicationAdmin)

Спасибо за любую помощь.

Ответы [ 3 ]

1 голос
/ 20 февраля 2009

Если вы не используете промежуточную таблицу, как описано здесь http://docs.djangoproject.com/en/dev/ref/contrib/admin/#working-with-many-to-many-intermediary-models, Я не думаю, что вам нужно создавать класс Inline. Попробуйте удалить строку includes=[PathologyInline] и посмотрите, что получится.

0 голосов
/ 27 февраля 2009

Для меня это больше похоже на отношения один-ко-многим, хотя я не совсем понимаю, что такое патологии. Также, насколько я понимаю, Inlines не работают на многих компьютерах. Это должно сработать, если вы измените порядок моделей, удалите множество и добавите поле ForeignKey в Publication in Pathology.

class Publication(models.Model):
    pubtitle = models.TextField()
    def __unicode__(self):
        return self.pubtitle
    class Meta:
        ordering = ["pubtitle"]

class Pathology(models.Model):
    pathology = models.CharField(max_length=100)
    publication = models.ForeignKey(Publication)
    def __unicode__(self):
        return self.pathology
    class Meta:
        ordering = ["pathology"]
0 голосов
/ 24 февраля 2009

Теперь я понимаю, что Django отлично подходит для администрирования (ввода данных) веб-сайта, простого поиска и наследования шаблонов, но Django и Python не очень хороши для сложных веб-приложений, где данные перемещаются назад и вперед между базами данных. и HTML-шаблон. Я решил объединить Django и PHP, надеюсь, используя сильные стороны обоих. Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...