Seite 1 von 1

[Django] Problem mit ModelInline

Verfasst: Montag 20. Juli 2009, 13:41
von Toffer
Hallo Leute,

ich habe folgendes Problem, ich nutze den ModelInline modus im Django Admin. Das funktioniert soweit auch problemlos nur das löschen und editieren ist problembehaftet. Man kann immer nur den untersten Eintrag im Inline Model löschen oder editieren, mache ich dies mit den anderen Einträgen des Inline Models, gibt mir Django zwar die Meldung aus, dass der Eintrag erfoglreich geändert wurde, aber es findet kein Lösch/Änderungsvorgang statt.

Wenn jemand eine Idee hat würde ich mich sehr freuen, und falls nicht weiß vielleicht jemand welche Datei im Framework selber für die Verwaltung der InlineModels zuständig ist?

Vielen Dank schonmal im voraus ;)

Toffer

Verfasst: Montag 20. Juli 2009, 16:36
von apollo13
Welche Django Version, hier ist eher bei dir was falsch. Die Datei wäre django/contrib/admin/options.py (aus dem Kopf, aber sollte passen)

Verfasst: Dienstag 21. Juli 2009, 08:30
von Toffer
Ich nutze dir Version 1.0. Danke für die rasche Antwort ;).

Verfasst: Dienstag 21. Juli 2009, 15:47
von apollo13
Hmm zeigt mal die model und admin definitions her, das kann ansich nicht sein.

Verfasst: Donnerstag 30. Juli 2009, 10:55
von Toffer
Sorry war die letzden tage nicht im lande das Problem besteht leider immer noch.

Hier mal die Models:

Code: Alles auswählen

class Person(models.Model):
    company = models.ForeignKey(Company,null=True,blank=True,verbose_name='Firma')
    position = models.ForeignKey(Position,null=True,blank=True)
    salut = models.ForeignKey(Salutation,verbose_name='Anrede')
    adviser = models.ForeignKey(Adviser,null=True,blank=True,verbose_name='Betreuer')
    titel = models.ForeignKey(Title,verbose_name='Titel',null=True,blank=True)
    birth = models.CharField('Geburtstag',max_length=20,null=True,blank=True,help_text="Bitte halten sie folgene Formatierung ein: <em>DD.MM.YYYY</em>.")
    fname = models.CharField('Vorname',max_length=100)
    sname = models.CharField('Nachname',max_length=100)
    comment = models.CharField('Kommentar',null=True,blank=True,max_length=40)
    subkey = models.ManyToManyField(SubTag,blank=True,null=True,verbose_name='Stichwort')
In dem Model befinden sich 2 InlineModels.
Einmal:

Code: Alles auswählen

class Communication(models.Model):
	person = models.ForeignKey(Person)
	worker = models.ForeignKey(Adviser,verbose_name='Betreuer')
	date = models.DateField('Datum')
	type = models.ForeignKey(CommunicationType,verbose_name='Kontaktart')
	topic = models.CharField(max_length=255)
	text = models.TextField(blank=True,null=True)
	def __unicode__(self):
		return self.topic
	class Admin:
		pass
	class Meta:
		verbose_name = decode_entities('Kontaktereignis')
		verbose_name_plural = decode_entities('Kontaktereignisse')
und einmal:

Code: Alles auswählen

class ContactChannel(models.Model):
    person = models.ForeignKey(Person)
    type = models.ForeignKey(Phonetype,verbose_name="Art")

    number = models.CharField("Adresse",max_length=40)
    def __unicode__(self):
        return ''
    class Meta:
        verbose_name = 'Kontaktkanal'
        verbose_name_plural = decode_entities('Kontaktkanäle')
Und hier die admin.py

Code: Alles auswählen

from ropdog.Person.models import *
from django.contrib import admin
from ropdog.communication.models import *
class CommunicationInline(admin.StackedInline):
    model = Communication
    extra = 1
class ContactChannelInline(admin.StackedInline):
    model = ContactChannel
    extra = 5
class PersonAdmin(admin.ModelAdmin):
    inlines = [ContactChannelInline,CommunicationInline]
    search_fields = ['fname','sname','subkey__name','subkey__key__word','company__name']
    list_display = ('sname', 'fname','birth','company','position','get_tele','get_keywords')
    list_filter = ['company']
    filter_horizontal = ['subkey']
    fieldsets = [
	 (None,               {'fields': ('salut','titel','sname','fname','birth','company','position','comment',)}),
        ('Tags', {'fields': ['subkey'], 'classes': ['collapse']}),
    ]
    class Media:
        js = ('/media/js/jquery.js',)
admin.site.register(Person,PersonAdmin)
Mich wundert das auch total, vorallem is es bei beiden Inlines das gleiche Problem immer nur das unterste lässt sich löschen.

Vilen Dank und beste Grüße

Toffer

Verfasst: Samstag 1. August 2009, 11:16
von sma
Ein `class Admin: pass` sollte es für Django 1.0 doch nicht mehr geben. Inzwischen ist ja Django 1.1 erschienen. Besteht damit das Problem auch noch? Eigentlich müsste nämlich problemlos gehen, was Toffer will und das Datenmodell sieht auf den ersten Blick auch harmlos aus.

Stefan

Verfasst: Samstag 1. August 2009, 14:17
von apollo13
Was tut dein Javascript, dass du inkludierst? Wenn du damit die Inlines änderst könnte einiges kaputt gehen.

Verfasst: Mittwoch 12. August 2009, 15:52
von csc
Nach 1.1 (was ja in den Patchnotes steht) Funktioniert bei mir genau die Sachen ohne Probleme!