2016-06-26 24 views
0

Ich habe diesen Code aus einer anderen SO-Frage kopiert (link).Erstellen einer Django-Eigenschaft

from django.template.defaultfilters import truncatechars # or truncatewords 

class Foo(models.Model): 
    description = models.TextField() 

    @property 
    def short_description(self): 
     return truncatechars(self.description, 100) 

class FooAdmin(admin.ModelAdmin): 
    list_display = ['short_description'] 

ich auch dieses Stück Code von dieser Frage (link) kopiert.

class Projects(models.Model): 
    Name = models.CharField(max_length=100, null=True, blank=False) 
    Date = models.DateField(null=True, blank=False) 
    Month = models.CharField(max_length=100, null=True, blank=False) 

     def get_month(self): 
      if self.Date: 
       self.Month = self.Date.strftime("%B") 
       self.save() 

Ich bin mir bewusst, die Konzepte in diesen zwei Fragen diskutiert, aber ich bin nicht sicher, wo ich die Liste der verfügbaren Optionen finden kann. Zum Beispiel die Verwendung von return truncatechars(self.description, 100) und die Verwendung von self.Month = self.Date.strftime("%B"), wo ist die Bibliothek, wo ich meine verfügbaren Optionen finden kann? Ich möchte eine neue Eigenschaft erstellen, bin mir aber nicht sicher, wo ich meine "Bibliothek" mit Optionen finden kann.

Ich nehme auch an, dass dies immer in der models.py gemacht wird?

Antwort

2

Ich weiß nicht, was Sie unter 'library' of options verstehen, es gibt keine Bibliothek zum Definieren einer Eigenschaft in Django. Es ist nur eine normale attribute of Python seit Version 2.2.

und ja, models.py ist der Ort, wo Sie es definieren, da nur dort Sie die Felder einer Klasse definieren.

> example for property from official docs

+1

Vielen Dank, das macht Sinn. Und danke für die Bereitstellung der Links. – Kervvv

+0

@ceuskervin Sie sind willkommen – doniyor