34 Stimmen

Wie kann man einen Standard für ein Django ForeignKey Model oder AdminModel Feld festlegen?

Wie kann ich einen Standardwert für ein ForeignKey-Feld in einem django Model oder AdminModel festlegen?

Etwa so (aber das funktioniert natürlich nicht)...

created_by = models.ForeignKey(User, default=request.user)

Ich weiß, dass ich es in der Ansicht "austricksen" kann, aber in Bezug auf das AdminModel scheint es nicht möglich zu sein.

0voto

vikasvmads Punkte 472

Sie sollten Einstellungen in Bezug auf setting.AUTH_USER_MODEL in der Datei settings.py haben.

Sie können im unten stehenden Dokument nachsehen:

" https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#substituting-a-custom-user-model "

0voto

aprasanth Punkte 1019

Sie können die get_form Methode Ihres Modells admin.

admin.py

class YourModelAdmin(admin.ModelAdmin):
    def get_form(self, request, obj=None, **kwargs):
        form = super(YourModelAdmin, self).get_form(request, obj, **kwargs)
        form.base_fields['created_by'].initial = request.user
    return form

admin.site.register(YourModel, YourModelAdmin)

0voto

nishit chittora Punkte 774

Von all den Iterationen, die ich unternommen habe, um eine bessere Lösung zu finden, finde ich, dass die Erstellung einer kleinen Funktion die Komplexität der Aufgabe wesentlich verringert. Denn einige der Lösungen sind veraltet oder werden in neueren Django-Versionen nicht mehr unterstützt.

def get_request_user():
    # or any complex query result to set default value in ForeignKey
    return request.user.id

Dann können Sie obige Funktion als Argument in ForeignKey übergeben.

created_by = models.ForeignKey(User, default=get_request_user)

-2voto

class table1(models.Model):
    id = models.AutoField(primary_key=True)
    agentname = models.CharField(max_length=20)

class table1(models.Model):
    id = models.AutoField(primary_key=True)
    lastname = models.CharField(max_length=20)
    table1 = models.ForeignKey(Property)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X