django-forms template - Django Modellform NICHT benötigt Feld




language example (5)

Ich habe eine Form wie folgt:

class My_Form(ModelForm):
    class Meta:
        model = My_Class
        fields = ('first_name', 'last_name' , 'address')

Wie kann ich das Adressfeld als optional angeben?


Answers

class My_Form(forms.ModelForm):
    class Meta:
        model = My_Class
        fields = ('first_name', 'last_name' , 'address')

    def __init__(self, *args, **kwargs):
        super(My_Form, self).__init__(*args, **kwargs)
        self.fields['address'].required = False

Raten Sie, Ihr Modell ist so:

class My_Class(models.Model):

    address = models.CharField()

Deine Form:

class My_Form(ModelForm):

    address = forms.CharField(required=False)

    class Meta:
        model = My_Class
        fields = ('first_name', 'last_name' , 'address')

Sie müssten hinzufügen:

address = forms.CharField(required=False, blank=True, null=True)

@ Anentropics Lösung aus dem Kommentar zu @ Atmas Antwort funktionierte für mich. Und ich denke, es ist auch das Beste.

Sein Kommentar:

null = True, blank = True bewirkt, dass das ModelForm-Feld erforderlich ist = False

Ich habe es einfach auf mein ManyToMany-Feld in meiner UserProfile Klasse gesetzt und es funktionierte einwandfrei.

Meine UserProfile Klasse sieht jetzt so aus (beachten Sie das Feld friends ):

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    friends = models.ManyToManyField('self', null=True, blank=True)

Ich denke auch, dass dies die schönste Lösung ist, da du das Gleiche tust, setze null und blank auf True , wenn du ein einfaches char Feld hast oder, wie ich, ManyToMany .

Nochmals vielen Dank @Anentropic. :)

PS Ich schrieb dies als Post, da ich nicht kommentieren konnte (ich habe weniger als 50 Reputation), aber auch, weil ich denke, dass sein Kommentar mehr Aufmerksamkeit benötigt.

PPS Wenn diese Antwort Ihnen geholfen hat, machen Sie bitte seinen Kommentar.

Prost :)


Wie Uku Loskit gesagt hat, sind statische Dateien für Dinge wie CSS-Dateien, JavaScript-Dateien, Bilder usw. Ihrer Anwendungen. Mediendateien sind typischerweise Dateien, die vom Benutzer oder vom Administrator hochgeladen werden können.

Normalerweise werden MEDIA_ROOT und STATIC_ROOT separate Verzeichnisse sein. STATIC_ROOT Sie, dass in STATIC_ROOT der Verwaltungsbefehl STATIC_ROOT alle gefundenen statischen Dateien STATIC_ROOT . In der Produktion konfigurieren Sie dann Ihren Webserver so, dass er die Dateien aus STATIC_ROOT wenn er eine Anfrage erhält, die mit STATIC_URL beginnt. Wenn Sie den Django-Devserver für die Entwicklung verwenden, werden automatisch statische Dateien geliefert.

Die Anwendung staticfiles entwirrt damit vom Benutzer hochgeladene Medien von den Anwendungsmedien und vereinfacht so die Bereitstellung, die Sicherung und die Versionskontrolle. Vor der staticfiles-App war es für Entwickler üblich, dass die Mediendateien mit statischen Anwendungsressourcen gemischt wurden.

Die 1.3 Dokumente für statische Dateien haben sich stetig verbessert; Weitere Details finden Sie in der how-to .





django django-forms optional django-models