Einige Kommentare zu dieser Frage deuten darauf hin, dass es eine einfachere und aktuellere Lösung gibt. (Ich habe keine gefunden)
(Kommentare wie: "Ja, es ist gelöst. Übergeben Sie einfach die zugehörige Instanz als Parameter, und sie wird vorab ausgefüllt..." lassen mich glauben, dass es jetzt einfach ist, aber ich kann es immer noch nicht zum Laufen bringen)
Die Sache ist die, dass ich Benachrichtigungen an einige Benutzer senden möchte, die an einem bestimmten Ereignis beteiligt sind und vom Administrationspersonal ausgewählt wurden. Das Personalmitglied befindet sich auf der Seite des Ereignisses, wählt das Ereignis aus und speichert es, dann sollten die Fremdschlüsselfelder im Inline mit den beteiligten Benutzernamen vorab ausgefüllt werden. (Und warten darauf, dass das Personalmitglied sie überprüft oder abwählt, um eine E-Mail-Benachrichtigung zu erhalten)
Aus Gründen der Benutzerfreundlichkeit ist es entscheidend, dass dies in Form eines Inline erfolgt, da bereits viele Seiten durchgegangen werden müssen, um alle erforderlichen Informationen vom Personal zu sammeln.
Ideen?
class When(models.Model):
...
Datum = models.DateTimeField(unique=True)
Nameofevent = models.ForeignKey(Event, to_field='Name') #das Event-Modell ruft dann den Benutzernamen von models.ManyToManyField(User, through='Role') ab
...
def getteam(self):
teamliste = self.Nameofevent.Roleinevent.all() # Benutzer sammeln, die beteiligt sind
return teamliste
getteamresult = property(getteam)
class Notice(models.Model): #dies wird in den Inline gehen
...
Wer = models.ForeignKey(User, blank=True)
Zu_beachten_oder_nicht_zu_beachten = models.BooleanField(default=False)
...
class NoticeInline(admin.TabularInline):
model = Notice
extra = 9
class WhenAdmin(admin.ModelAdmin):
list_display = ('Datum', ...)
readonly_fields = ('getteamresult', ) #dies dient dazu, deutlich zu machen, dass ich Zugriff auf das habe, was ich will und es anzeigen kann. wird ausgegeben als [, ]
inlines = [NoticeInline] #aber ich möchte, dass die Benutzerobjekte das Fremdfeld hier im Inline-Modell vorab ausfüllen
admin.site.register(When,WhenAdmin)