2017-07-21 4 views
0

Ich verstehe nicht, was ich falsch mache. Ich möchte, dass ein Benutzer nur den Titel und die Beschreibung des Annoucement-Modells hinzufügt, und der Rest sollte automatisch ausgefüllt werden. Hier ist mein Modell:Kann save_model django admin nicht überschreiben?

class Annoucement(models.Model): 
    username = models.ForeignKey(User, on_delete=None) 
    title = models.CharField(max_length=500, default="") 
    description = models.TextField(max_length=5000, default="") 
    datetime = models.DateTimeField(default=datetime.now) 

    def __str__(self): 
     return self.title + " " + self.username.username 

Und das ist admin.py Datei.

from django.contrib import admin 

from .models import Profile, Activity, View, Annoucement 
# Register your models here. 


class AnnoucementAdmin(admin.ModelAdmin): 
    fields = ['title', 'description'] 


    def save_model(self, request, obj, form, change): 
     obj.username = request.user 
     print("yes") 
     super(AnnoucementAdmin, self).save_model(request, obj, form, change) 

admin.site.register(Profile) 
admin.site.register(Activity) 
admin.site.register(View) 
admin.site.register(Annoucement) 

Auch die print („Ja“) kommt auch nicht auf dem Terminal, sobald ich das Modell aus dem Admin-Panel zu speichern. HILFE!

Antwort

1

1) admin.site.register(Annoucement, AnnoucementAdmin)

2) hinzufügen 'return' in der letzten save_model

class AnnoucementAdmin(admin.ModelAdmin): 
    fields = ['title', 'description'] 

    def save_model(self, request, obj, form, change): 
     obj.username = request.user 
     print("yes") 
     return super(AnnoucementAdmin, self).save_model(request, obj, form, change) 
1

müssen Sie die Klasse AnnoucementAdmin passieren, wie folgt aus:

.... 
admin.site.register(Annoucement, AnnoucementAdmin) 
Verwandte Themen