[Django] Problem mit ModelInline

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Toffer
User
Beiträge: 9
Registriert: Freitag 19. Juni 2009, 09:49

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
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

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)
Toffer
User
Beiträge: 9
Registriert: Freitag 19. Juni 2009, 09:49

Ich nutze dir Version 1.0. Danke für die rasche Antwort ;).
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Hmm zeigt mal die model und admin definitions her, das kann ansich nicht sein.
Toffer
User
Beiträge: 9
Registriert: Freitag 19. Juni 2009, 09:49

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
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Was tut dein Javascript, dass du inkludierst? Wenn du damit die Inlines änderst könnte einiges kaputt gehen.
csc
User
Beiträge: 23
Registriert: Montag 15. Juni 2009, 11:22

Nach 1.1 (was ja in den Patchnotes steht) Funktioniert bei mir genau die Sachen ohne Probleme!
Antworten