2017-11-05 2 views
0

Ich verwende Django-Signale, um Code auszulösen, sobald der Benutzer erstellt wurde Ich speichere zusätzliche Daten in einer anderen Modellklasse, es wird ausgelöst, aber es wird nicht auf eine zusätzliche Datenobjektseite umgeleitet.django-admin: Wie wird nach einem Objekt auf URL umgeleitet?

Hier ist meine models.py

from django.db import models 
from django.core.urlresolvers import reverse 
from django.contrib.auth.models import User 
from django.db.models.signals import post_save 

class Customers(models.Model): 
    user = models.OneToOneField(User) 
    business_name = models.CharField(max_length=250) 
    address = models.CharField(max_length=500) 
    area = models.CharField(max_length=250) 
    city = models.CharField(max_length=250) 
    state = models.CharField(max_length=250) 
    pincode = models.IntegerField(default='0') 
    phone = models.IntegerField(default='0') 
    mobile = models.IntegerField(default='0') 

    def create_customer(sender, **kwargs): 
     if kwargs['created']: 
      customer_profile = Customers.objects.create(user=kwargs['instance']) 

    post_save.connect(create_customer, sender=User) 

und hier ist mein admin.py

from django.contrib import admin 
from .models import Customers 
from django.shortcuts import redirect 

admin.site.register(Customers) 

class Customers(admin.ModelAdmin): 
    def response_add(self, request, obj, post_url_continue=None): 
     return redirect('/admin/app/customers/add/') 

    def response_change(request, obj): 
     return redirect('/admin/app/customers/add/') 

Müde nach der Antwort suchen, aber nichts funktioniert, kann man mich hier korrigieren.

Antwort

0

Es sieht nicht so aus, als würden Sie Ihre Admin-Konfiguration registrieren. Weitere Informationen finden Sie unter Django docs on the register decorator. Die Syntax besteht darin, Ihre Funktion mit @admin.register(<model>) zu dekorieren, oder wenn Sie die Modell-Admin-Konfiguration manuell registrieren möchten, dann .

Ich würde empfehlen, class Customers(admin.ModelAdmin): zu class CustomersAdmin(admin.ModelAdmin): oder etwas Ähnliches zu ändern, um den Namespace-Konflikt zu stoppen.

Siehe Beispiel unten:

from django.contrib import admin 
from .models import Customers 
from django.shortcuts import redirect 


@admin.register(Customers) 
class CustomersAdmin(admin.ModelAdmin): 
    def response_add(self, request, obj, post_url_continue=None): 
     return redirect('/admin/app/customers/add/') 

    def response_change(request, obj): 
     return redirect('/admin/app/customers/add/') 
Verwandte Themen